如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第4章汇编语言程序设计4.1汇编语言源程序和汇编程序4.1.2汇编语言源程序和机器语言目标程序图4-1源程序的汇编过程4.1.3汇编和汇编程序1.汇编:汇编语言(源)程序不能被计算机识别和执行必须经过翻译。把源程序翻译成机器语言目标程序的过程,叫做汇编。2.汇编程序(ASM):完成汇编任务的程序叫做汇编程序。它是一种通用系统软件,能把汇编语言翻译成计算机能够识别和执行的目标程序。3.宏汇编程序(MASM):宏汇编则在基本汇编基础上进一部扩展了功能。能够把源程序中一组汇编语言语句序列定义为一条宏指令的汇编程序,叫做宏汇编程序。4.汇编时一般采用MASM汇编程序。4.2MASM宏汇编语言程序的语句类型和格式指令语句格式3.例句:NEXT:ADDAX,BX;4.2.2伪指令语句1.定义:伪指令语句即不是真正的指令语句,它是CPU不执行的语句。在汇编后它本身不产生目标代码,只为汇编程序提供汇编时所需要的控制信息。2.语句格式:3.例句:VARDB20H,30H;DB20,304.2.3宏指令语句:1.定义:在程序开头,把经常要使用的一个汇编语句序列用一条指令代替(即定义成一个宏符号),这种指令就称宏指令。2.语句格式:宏指令名MACRO[形式参数1][,[形式参数2]…](宏定义伪指令语句序列)ENDM3.例句例:试定义从键盘输入字符串的宏指令.KBINMACROA;KBIN为宏指令名,A为输入参数MOVAH,0AH;10号功能调用,键入字符串MOVDX,OFFSETA;缓冲区A首地址偏移量送DXINT21H;ENDM;宏定义结束4.38086/8088汇编语言中的标识符、运算符及操作符4.3.2变量和地址表达式1、变量:通常是指存放在存储单元中的值。在程序中作为存储器操作数被引用。变量定义一般在数据段中,故一个变量被定义后就有了三种属性:段属性、偏移属性和类型属性。2、地址表达式:由常量、变量、标号、寄存器(如:BX、BP、SI、DI)的内容(用寄存器名加方括号表示)以及一些运算符组成的式子称为地址表达式。地址表达式主要用来表示指令语句中的操作数。因此,也具有三属性。3、变量的三属性(1)段属性(SEEMENT)——段基址,即标号或者变量所在段的段地址。(2)偏移属性(OFFSET)——段内偏移地址,即标号或变量所在单元的地址与所在段的段起始地址之差。(3)类型属性(TYPE)——变量的类型是指存取该变量中的数据所需要的字节数,类型有BYTE(字节)、WORD(字)、DWORD(双字)、DQ(四字)、DT(十字节)5种。4.3.3运算符1、算术运算符:有+(加)、-(减)、*(乘)、/(除)、MOD(取余)、SHL(左移)、SHR(右移)共7种。例:已知源程序指令格式如下:DAEQU300MOVAX,D-80MOVBX,DAMOD100MOVCX,DA/100MOVDH,01100100BSHR2汇编后,计算表达式形成指令如下:DAEQU300MOVAX,220MOVBX,0MOVCX,3MOVDH,19H2、逻辑运算符:是按位操作的AND(与)、OR(或)、XOR(异或)、NOT(非),只适用于数值表达式。例:INAL,PORTANDDX,PORTAND0FEHOUTDX,AX解:后面一个AND为运算符,汇编时,计算表达式得到一个端口号。设原输入端口号PORT为80H,则10000000表达式PORTAND0FEH的值为80H∧1111111010000000设原输入端口号PORT为81H,则10000001计算表达式仍得到80H∧1111111010000000前面一个AND(指令助记符)在运行程序时,将(DX)与计算出的表达式相“与”。结果送DX中,DX为输出端口号。INAL,PORT;AL=(80H)ANDDX,80H;OUTDX,AX3、关系运算符:这类运算符有EQ、NE、LT、GT、LE和GE。关系运算符的两个操作数必须同是数值或同是一个段内的两个存储器地址。比较时,若关系成立(为真),则结果为全“1”,若关系不成立(为假),则结果为全“0”。其结果值在汇编时获得。例:MOVAX,10HGT16ADDBL6EQ0110BMOVCX,((PORTLT5)AND100)OR((PORTGE5)AND200)解:汇编时,形成指令MOVAX,0ADDBL,0FFH;若满足PORT<5,,则PORTLT5逻辑取值为真,即(111AND100)OR(000AND200)100OR000MOVCX,100;当端口地址PORT<5时,汇编结果所等效的指或者MOVCX,200;当端口地址P