最新微机原理课件第四章宏汇编语言程序设计PPT课件.ppt
《最新微机原理课件第四章宏汇编语言程序设计PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新微机原理课件第四章宏汇编语言程序设计PPT课件.ppt(163页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理课件第四章宏汇编微机原理课件第四章宏汇编语言程序设计语言程序设计基本概念:基本概念:汇编语言:用指令的助记符、符号地址、标号汇编语言:用指令的助记符、符号地址、标号 等来编写的语言。等来编写的语言。汇编语言源程序:用汇编语言编写的程序(汇编语言源程序:用汇编语言编写的程序(*.asm)有两种语句格式:有两种语句格式:指令性语句:汇编时翻译成目标代码(机器码),指令性语句:汇编时翻译成目标代码(机器码),占代码段空间。占代码段空间。指示性语句(伪指令):汇编时,不产生目标代指示性语句(伪指令):汇编时,不产生目标代码,只是为汇编程序提供信息,不占代码段空间。码,只是为汇编程序提供信息,不
2、占代码段空间。汇编程序:将汇编语言源程序翻译成目标目标程汇编程序:将汇编语言源程序翻译成目标目标程序(代码),这个翻译过程称为汇编,翻译软件就序(代码),这个翻译过程称为汇编,翻译软件就叫汇编程序。叫汇编程序。汇编过程汇编过程例例4-5 IN AL,PORT AND DX,PORT AND 0FEH OUT DX,AX前一个前一个AND是指令助记符,而后一个是指令助记符,而后一个AND是是逻辑运算符。逻辑运算符。逻辑运算符与逻辑运算符与8086指令系统中的指令助记指令系统中的指令助记符符AND、OR、XOR、NOT符号完全相同,符号完全相同,但两者是不会混淆的。作为但两者是不会混淆的。作为MA
3、SM的运算符的运算符是在汇编过程中进行计算的,而指令助记符是在汇编过程中进行计算的,而指令助记符是在程序执行时进行运算的。是在程序执行时进行运算的。三、关系运算符三、关系运算符 有:有:EQ(相等)、(相等)、NE(不等)、(不等)、LT(小于)、(小于)、GT(大于),(大于),LE(小于或等于)、(小于或等于)、GE(大于或等于)。(大于或等于)。关系运算符的两个操作数必须是数据,关系运算符的两个操作数必须是数据,或是同一段内的两个存储单元的地址。进行或是同一段内的两个存储单元的地址。进行关系运算的比较操作后,结果是一个数值,关系运算的比较操作后,结果是一个数值,若结果为真,输出若结果为真
4、,输出全全1,即,即FFH(8位)或位)或FFFFH(16位)。若结果为假,输出全位)。若结果为假,输出全0。例例4-6 MOV AX,10H GT 16 MOV BL,6 EQ 0110B MOV CX,12H GE 12由于表达式由于表达式10H GT 16为假所以汇编成:为假所以汇编成:MOVAX,0由于表达式由于表达式6 EQ 0110B为真所以汇编成:为真所以汇编成:MOVBL,0FFH注意:注意:MOV BL,1 由于表达式由于表达式12H GE 12 为真所以汇编成:为真所以汇编成:MOVCX,0FFFFH注意:注意:MOV CX,1 四、数值返回运算符四、数值返回运算符数值返回
5、运算符也经常称作分析运算符数值返回运算符也经常称作分析运算符有:有:OFFSET、SEG、TYPE、LENGTH、SIZE 5种,它们加在变量或标号前,返回运种,它们加在变量或标号前,返回运算对象的某个参数值,例如偏移地址值、段算对象的某个参数值,例如偏移地址值、段地址值、类型属性、变量包含的单元数等。地址值、类型属性、变量包含的单元数等。1.OFFSET格式:格式:OFFSET 变量或标号变量或标号OFFSET 返回标号或变量的偏移地址值。返回标号或变量的偏移地址值。例例4-7 DDD:MOV AX,BX;标号;标号 MOV BX,OFFSET DDD ARRAY DB 1,2,3,4;变量
6、;变量 MOV BX,OFFSET ARRAY LEA BX,ARRAY2.SEG格式:格式:SEG 变量或标号变量或标号SEG 返回标号或变量的段地址值。返回标号或变量的段地址值。例例4-8 DDD:MOV AX,BX;标号;标号 MOV AX,SEG DDD MOV CS,AXARRAY DB 1,2,3,4;变量;变量 MOV AX,SEG ARRAY MOV DS,AX3.TYPE格式:格式:TYPE 变量或标号变量或标号TYPE加在变量前,返回变量的类型属性。加在变量前,返回变量的类型属性。TYPE加在标号前,返回标号的距离属性。加在标号前,返回标号的距离属性。例例4-9 A1 DB
7、 1,2,3;变量;变量A2 DW 1234H;变量;变量A3 DD 6 DUP(?);变量(?);变量 L1:MOV AH,TYPE A1;标号;标号MOV BH,TYPE A2MOV CH,TYPE A3MOV DH,TYPE L1MOV DX,TYPE L1汇编成:汇编成:MOVAH,1汇编成:汇编成:MOVBH,2汇编成:汇编成:MOVCH,4汇编成:汇编成:MOVDH,0FFH汇编成:汇编成:MOVDX,0FFFFH4.LENGTH格式:格式:LENGTH 变量变量当变量中使用当变量中使用DUP时,时,LENGTH返回此变返回此变量所包含的量所包含的单元数单元数,对其它变量则返回,对
8、其它变量则返回1。例例4-10 M1 DW 100 DUP(?)(?)M2 DB 1,2,3,4M3 DW 1234H,12H,3456HMOV CX,LENGTH M1MOV BL,LENGTH M2MOV DL,LENGTH M3汇编成:汇编成:MOVCX,100 汇编成:汇编成:MOVBL,1 MOVBL,4 汇编成:汇编成:MOVDL,1 MOVDL,3 5.SIZE格式:格式:SIZE 变量变量SIZE加在变量前,返回该变量包含的总字加在变量前,返回该变量包含的总字节数,节数,注意注意不能简单去数有多少个字节,而不能简单去数有多少个字节,而是利用公式是利用公式SIZE=LENGTHT
9、YPE来计算。来计算。例例4-10 M1 DW 100 DUP(?)(?)M2 DB 1,2,3,4M3 DW 1234H,12H,3456HMOV CX,SIZE M1MOV BL,SIZE M2MOV DL,SIZE M3汇编成:汇编成:MOVCX,200 汇编成:汇编成:MOVBL,1 MOV BL,4 汇编成:汇编成:MOVDL,2 MOV DL,6 五、修改属性运算符五、修改属性运算符修改属性运算符也经常称作综合运算符修改属性运算符也经常称作综合运算符有:有:段操作符段操作符、PTR、THIS、HIGH、LOW、SHORT 6种,可以在程序运行过程中,通种,可以在程序运行过程中,通过
10、修改属性运算符来修改变量或标号的属性,过修改属性运算符来修改变量或标号的属性,包含段属性、偏移地址属性、类型属性等。包含段属性、偏移地址属性、类型属性等。1.段操作符段操作符格式:格式:段前缀:变量或地址表达式段前缀:变量或地址表达式段前缀有段寄存器段前缀有段寄存器CS、DS,ES,SS后跟冒号后跟冒号:,用来表示某个变量或地址被修改到哪个,用来表示某个变量或地址被修改到哪个段寄存器提供的段地址。段寄存器提供的段地址。例例4-12 MOV AX,BX ;DS:BXAX MOV AX,ES:BX;ES:BXAX2.PTR格式:格式:类型类型/距离:距离:PTR 变量或标号变量或标号功能:功能:是
11、将是将PTR左边的类型属性赋给右边的左边的类型属性赋给右边的变量或标号。这样可以保证运算时操作数类变量或标号。这样可以保证运算时操作数类型的匹配,常与类型型的匹配,常与类型BYTE、WORD、DWORD、FAR、NEAR等连用。等连用。例例4-13N1 DB 12H,34HN2 DW 1122H,3344HLO:MOV AX,WORD PTR N1MOV BL,BYTE PTR N2例例4-14 MOV BX,10H MOV BYTE PTRBX,10HMOV WORD PTRBX,12HMOV BX,ALMOV BX,AX这两条指令正确与否?这两条指令正确与否?JMP FAR PTR LO;
12、修改标号的距离属性;修改标号的距离属性JMP NEAR PTR LO3.THIS格式:变量或标号格式:变量或标号 EQU THIS 类型或距离类型或距离功能:功能:将类型或距离属性赋给变量或标号,将类型或距离属性赋给变量或标号,该变量或标号的段地址和偏移地址与下一个该变量或标号的段地址和偏移地址与下一个存储单元的地址相同。存储单元的地址相同。例例4-15 FIRST EQU THIS BYTE TABLE DW 200 DUP(?)(?)FIRST的偏移地址值与的偏移地址值与TABLE的偏移地址值的偏移地址值相同,区别在于相同,区别在于FIRST变量为字节类型,而变量为字节类型,而TABLE为
13、字类型。为字类型。例例4-16 SSP EQU THIS FAR MOV AX,200此时此时MOV AX,200前有标号前有标号SSP,并赋予,并赋予FAR属性,允许其它段的属性,允许其它段的JMP指令跳到本段指令跳到本段SSP标号地址处来。标号地址处来。相当于相当于 SP:MOV AX,200;SP是远标号是远标号4.SHORT格式:格式:SHORT 标号标号SHORT用来说明转移类指令中转向地址的用来说明转移类指令中转向地址的属性,指出转向的目标地址与本指令之间的属性,指出转向的目标地址与本指令之间的距离在距离在-128+127之间,即限制在短转移范之间,即限制在短转移范围内。围内。例例
14、4-17 JMP SHORT L2 L2:MOV AX,BX 5.HIGH和和LOW格式:格式:HIGH/LOW 变量或标号变量或标号HIGH和和LOW称为字节分离运算符,对一个称为字节分离运算符,对一个数或地址表达式,数或地址表达式,HIGH从中分离出高位字节从中分离出高位字节LOW从中分离出低位字节。从中分离出低位字节。例例4-18 K1 EQU 1234HK2 EQU 5678HMOV AH,HIGH K1MOV BL,LOW K2汇编成:汇编成:MOVAH,12H 汇编成:汇编成:MOVBL,78H 六、其它运算符六、其它运算符有:有:、()()、.、MASK和和WIDTH等等七、优先
15、级七、优先级表达式是常数、变量、标号和运算符的表达式是常数、变量、标号和运算符的组合,在计算表达式时,应按优先级高低进组合,在计算表达式时,应按优先级高低进行计算,同时遵循同级运算从左到右的原则行计算,同时遵循同级运算从左到右的原则计算。计算。4-3 伪指令语句伪指令语句 伪指令语句没有对应的机器代码,并不伪指令语句没有对应的机器代码,并不像指令语句那样由像指令语句那样由CPU来执行,它是来执行,它是MASM汇编程序对源程序汇编期间进行处理的。主汇编程序对源程序汇编期间进行处理的。主要完成变量定义、存储器分配、指示程序开要完成变量定义、存储器分配、指示程序开始和结束、段定义、段分配等。伪指令有
16、以始和结束、段定义、段分配等。伪指令有以下几种类型:下几种类型:数据定义语句数据定义语句DB、DW、DD等等标号赋值语句标号赋值语句EQU、=段定义语句段定义语句SEGMENT ENDS段分配语句段分配语句ASSUME过程定义语句过程定义语句PROC ENDP程序开始结束语句程序开始结束语句ORG、END、NAME一、数据定义语句一、数据定义语句格式格式1:变量名:变量名 助记符助记符 操作数,操作数操作数,操作数 格式格式2:变量名:变量名 助记符助记符 n DUP(操作数,操作数(操作数,操作数)A1 DB 1,2,3A3 DB 5 DUP(1,2)功能功能:将操作数存入变量名指定的存储单
17、元:将操作数存入变量名指定的存储单元中,或者只分配存储空间不存入数据。中,或者只分配存储空间不存入数据。变量名变量名它用符号表示,可以省略,作用它用符号表示,可以省略,作用与指令语句中的标号相同,但后面不跟冒号与指令语句中的标号相同,但后面不跟冒号:。汇编程序汇编时将此变量的助记符后。汇编程序汇编时将此变量的助记符后的第一个字节的偏移地址作为它的符号地址。的第一个字节的偏移地址作为它的符号地址。助记符助记符主要有:主要有:DB:用来定义字节,表示每个操作数占一个字节:用来定义字节,表示每个操作数占一个字节DW:用来定义字,表示每个操作数占一个字:用来定义字,表示每个操作数占一个字DD:用来定义
18、双字,表示每个操作数占两个字:用来定义双字,表示每个操作数占两个字DQ:用来定义四个字,表示每个操作数四个字:用来定义四个字,表示每个操作数四个字DT:用来定义:用来定义10个字节,表示每个操作数个字节,表示每个操作数10个字节个字节操作数操作数操作数可以是常数、字符串、变操作数可以是常数、字符串、变量、标号、表达式等,多个操作数之间必须量、标号、表达式等,多个操作数之间必须用逗号用逗号,隔开。隔开。例例4-21 操作数是常数或表达式操作数是常数或表达式DA1 DB 10H,20HDA2 DW 1122H,34HDA3 DD 5*10H,1234H例例4-22 操作数是字符串操作数是字符串FI
19、RST DB HELLOSECOND DW OKTHIRD DB OK注意:注意:用用DW定义字符定义字符串时,只允许包含两个串时,只允许包含两个字符,多于两个字符时,字符,多于两个字符时,只能用只能用DB来定义。来定义。例例4-23 操作数用?定义不确定值的变量,用操作数用?定义不确定值的变量,用作保留存储空间,以便存放运算结果。作保留存储空间,以便存放运算结果。M1 DB?,?,?M2 DW 1234H,?,?例例4-24 操作数用操作数用DUP来定义重复变量来定义重复变量ONE DB 5 DUP(0)TWO DW 10 DUP(?)(?)THREE DB 3 DUP(1,2)FOUR D
20、B 2 DUP(1,3 DUP(10H););DUP 嵌套嵌套操作数是变量或标号:操作数是变量或标号:用伪指令用伪指令DW和和DD可以将变量或标号的可以将变量或标号的偏移地址存入存储器中,当用偏移地址存入存储器中,当用DD来定义时,来定义时,原变量或标号的偏移地址存入低位字中,原原变量或标号的偏移地址存入低位字中,原变量或标号的段地址存入高位字中。变量或标号的段地址存入高位字中。例例4-25 PP DB 1,2,3;变量;变量PPAD1:MOV AX,BX;标号;标号AD1、AD2AD2:MOV BX,CXONE DW PP;将变量;将变量PP的偏移地址值赋给的偏移地址值赋给 ;字变量;字变量
21、ONE TWO DW AD1;将标号;将标号AD1的偏移地址值赋的偏移地址值赋 ;给字变量给字变量TWOTHREE DD AD2;将标号;将标号AD2的偏移地址值的偏移地址值 和段地址值赋给双字变量和段地址值赋给双字变量THREE假设变量的假设变量的PP的偏移地址为的偏移地址为1000H,标号,标号AD1的偏移地址为的偏移地址为2000H,标号,标号AD2的偏移地址为的偏移地址为3000H,段地址为,段地址为4000H。二、表达式赋值语句二、表达式赋值语句 表达式赋值语句有两种,赋值语句表达式赋值语句有两种,赋值语句EQU和等号语句和等号语句=,它们均不占用内存。,它们均不占用内存。1.赋值语
22、句赋值语句EQU格式:符号名格式:符号名 EQU 表达式表达式功能:用来给变量、标号、常数、指令、表功能:用来给变量、标号、常数、指令、表达式等定义一个符号名,程序中用到达式等定义一个符号名,程序中用到EQU左左边的变量、标号时可用右边的常数值或表达边的变量、标号时可用右边的常数值或表达式代替,但一经定义在同一个程序模块中就式代替,但一经定义在同一个程序模块中就不能重新定义。不能重新定义。例例4-27 COUNT EQU 100 DATA EQU COUNT+2 A1 EQU BX+SI B1 EQU OFFSET A1 C1 EQU ADD如果有以下指令,则代表:如果有以下指令,则代表:MO
23、V AX,COUNT MOV AX,100MOV BX,DATA MOV BX,102MOV AL,A1 MOV AL,BX+SIMOV AX,A1 MOV AX,BX+SIMOV BX,B1 MOV BX,OFFSET BX+SIC1 AX,BX ADD AX,BX 在在EQU语句右边表达式中有变量或标语句右边表达式中有变量或标号的表达式,必须先给它们定义,如号的表达式,必须先给它们定义,如DATA EQU COUNT+2必须先定义必须先定义COUNT,否则,否则汇编程序将指示出错。汇编程序将指示出错。PURGE语句可以解除对某一个标号的语句可以解除对某一个标号的赋值,使它在后面可以重新定义
24、。赋值,使它在后面可以重新定义。PURGE C1 ;C1不再代替不再代替ADD2.等号语句等号语句=等号语句等号语句=与与EQU语句具有相同功能,语句具有相同功能,区别在于区别在于EQU中左边的标号不允许重新定义,中左边的标号不允许重新定义,而用而用=定义的语句允许重新定义。定义的语句允许重新定义。例例4-28 COUNT=100COUNT=COUNT+10A1=BX+SIMOV AX,A1B1=ADDA1=BX MOV CX,A1三、段定义语句三、段定义语句 前面讲过,存储器的物理地址由段地址前面讲过,存储器的物理地址由段地址和偏移地址组合而成,任何一个逻辑段,无和偏移地址组合而成,任何一个
25、逻辑段,无论是代码段,数据段,堆栈段,附加段,都论是代码段,数据段,堆栈段,附加段,都必须进行段定义,以便连接程序把不同段和必须进行段定义,以便连接程序把不同段和模块连成一个可执行程序。此外还必须明确模块连成一个可执行程序。此外还必须明确段和段寄存器之间的关系,这可使用段分配段和段寄存器之间的关系,这可使用段分配语句来完成。语句来完成。1.段定义语句段定义语句 SEGMENT ENDS格式:格式:段名段名 SEGMENT 定位类型定位类型 组合类型组合类型 分分类名类名 段名段名 ENDS功能:将一个逻辑段定义成一个整体。功能:将一个逻辑段定义成一个整体。段名段名 SEGMENT 定位类型定位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 微机 原理 课件 第四 汇编语言 程序设计 PPT
限制150内