高级汇编技术.ppt





《高级汇编技术.ppt》由会员分享,可在线阅读,更多相关《高级汇编技术.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、6 高级汇编技术本章学习要点本章学习要点n1、掌握宏汇编的基本概念、掌握宏汇编的基本概念 n2、理解宏定义、宏调用、宏展开的特点和使、理解宏定义、宏调用、宏展开的特点和使用过程用过程 n3、了解重复汇编的基本概念和使用、了解重复汇编的基本概念和使用n4、了解条件汇编的基本概念和使用、了解条件汇编的基本概念和使用6 高级汇编技术高级汇编技术6.1 宏汇编宏汇编 6.2 重复汇编重复汇编 6.1.1 宏定义、宏调用和宏展开宏定义、宏调用和宏展开 6.1.2 形参和实参形参和实参 6.1.3 伪指令伪指令PURGE 6.1.4 伪指令伪指令LOCAL 6.1 宏汇编宏汇编n什么是宏?什么是宏?n宏(
2、或宏指令)是源程序中一段有独立功能的程宏(或宏指令)是源程序中一段有独立功能的程序代码,只需定义一次,可以多次调用。序代码,只需定义一次,可以多次调用。n 为什么使用宏汇编?为什么使用宏汇编?n在编制汇编语言程序过程中,有些功能程序段需在编制汇编语言程序过程中,有些功能程序段需要多次重复使用,所不同的只是参与操作的操作要多次重复使用,所不同的只是参与操作的操作数。数。n为了减少编程的工作量,通常采用两种方法:为了减少编程的工作量,通常采用两种方法:n将程序段编写为独立的子程序将程序段编写为独立的子程序 n将程序段定义成宏将程序段定义成宏6.1.1 宏定义、宏调用和宏展开宏定义、宏调用和宏展开1
3、.宏定义宏定义 用伪指令MACRO/ENDM实现,其语句格式是:宏指令名 MACRO 形参1,形参2,形参n 宏体 ENDM 例如,BCD码和ASCII码之间的转换,可将AL中的内容左移或右移定义成宏指令。说明说明n 宏指令名是该宏定义的名称。调用时使用宏指令是该宏定义的名称。调用时使用宏指令名对该宏定义进行调用。名对该宏定义进行调用。n 宏指令符合标识符规定。宏指令名不能重复,但符合标识符规定。宏指令名不能重复,但可以和源程序中的其他变量、标号、指令、伪指令可以和源程序中的其他变量、标号、指令、伪指令名相同,在这种情况下宏指令的优先级最高。名相同,在这种情况下宏指令的优先级最高。n MACR
4、O必须与必须与ENDM成对出现。成对出现。MACRO标识标识宏定义的开始宏定义的开始。n 形式参数(即形参,也称哑元、虚参)是可选项,(即形参,也称哑元、虚参)是可选项,宏可以不带参数;带参数时,多个形参间用逗号分宏可以不带参数;带参数时,多个形参间用逗号分隔。形参的规定与对标识符的规定是一致的隔。形参的规定与对标识符的规定是一致的。n1.宏定义宏定义假设左移4位:SHIFT MACRO MOV CL,4 SAL AL,CL ENDMn2.宏调用宏调用宏调用的格式为:宏指令名 实参1,实参2,实参n对于上例的宏定义,编程时宏调用语句为 SHIFT n3.宏展开 宏展开将宏指令语句用宏定义中宏体
5、的程序段目标代码替换。汇编源程序时,宏汇编程序将对每条宏指令语句进行宏展开,用实参替代相应的形参,对宏体目标代码作相应改变。例6.1n例6.1 将两个用压缩的BCD码表示的4位十进制数相加,结果存入RESULT单元中。;对两数相加功能进行宏定义 BCDADD MACRO VARX,VARY,RESULT MOV AL,VARX ADD AL,VARY DAA ;低位相加、调整 MOV RESULT,AL MOV AL,VARX1 ADC AL,VARY1 DAA ;高位相加、调整 MOV RESULT1,AL ENDMDATA SEGMENT A1 DB 30H,11H A2 DB 79H,4
6、7H A3 DB 2 DUP(?)B1 DB 32H,23H B2 DB 71H,62H B3 DB 2 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX BCDADD A1,A2,A3 ;宏调用 BCDADD B1,B2,B3 ;再次宏调用 RETCODE ENDS END START经宏展开后:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AL,A1 ADD AL,A2 DAA ;
7、低位相加、调整 MOV A3,AL MOV AL,A11 ADC AL,A21 DAA ;高位相加、调整 MOV A31,AL ;对两数相加功能进行宏定义 MOV AL,B1 ADD AL,B2 DAA ;低位相加、调整 MOV B3,AL MOV AL,B11 ADC AL,B21 DAA ;高位相加、调整 MOV B31,ALn宏汇编程序在所展开的指令前标识以号以示区别。n宏定义允许嵌套。在宏定义中可以使用宏调用,但必须先定义这个宏调用。例6.3例6.3 有宏定义如下:DIFML MACRO OPRAND,OPRATOPRAND MACRO X,Y,Z PUSH AX MOV AX,X O
8、PRAT AX,Y MOV Z,AX POP AXENDM ENDM对宏定义DIFML进行宏调用:DIFML ADDITION,ADD经宏展开:ADDITION MACRO X,Y,Z PUSH AX MOV AX,X ADD AX,Y MOV Z,AX POP AX ENDM为实现对ADDITION的调用,需要连续两条宏调用语句:DIFML ADDITION,ADD ADDITION N1,N2,N36.1.2 形参和实参n宏定义中可以不带任何形参,宏调用时不需提供实参(即使有实参,也会不予处理),宏展开后宏体中的所有指令不作修改原样插入到宏调用的宏指令处。如例6.4。n形参可以是操作码或操
9、作数的一部分,但在宏定义体中必须使用分隔符&,即&是操作符,在宏定义中可作为形参的前缀,展开时把&前后的两个符号连接起来,形成操作码、操作数或字符串。&只能出现在宏定义中。如例6.6n在宏定义中,形参可以出现在宏体的任何位置,可以是操作码或操作数。如例6.3中OPRAT。n伪操作%不能出现在形参的前面,通常用在宏调用中,将跟在它后面的表达式的值转换成以当前基数下的数,在宏展开时,用转换后的值代替形参。如例6.8。n在宏调用中的实参如果自身是带有间隔符(如逗号、空格),必须使用文本操作符将它括起来,作为单一的完整的实参。如例6.9。例6.4例6.4 将寄存器内容移位的操作定义为宏指令,并宏调用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 汇编 技术

限制150内