【摘要】:特殊宏操作符%用来将其后的表达式转换成它所代表的数值,并将此数值的ASCII码字符嵌入到宏扩展中。例如:宏定义:DATA MACRO A,B,C,DDWA,B,CDBD DUPENDM宏调用:X=10Y=20DATA%X+2,5,%X+Y,%Y-5宏扩展:DW 12,5,30DB 15D UP3.宏体中的变量与标号在某些宏定义中,常常需要定义一些变量或标号,当这些宏定义在同一程序中多次调用并进行宏扩展后,就会出现变量或标号重复定义的错误。LOCAL语句只能作为宏体的第一条语句,它后面即为宏定义的变量和标号表。
1.带间隔符的实参
在宏调用中,有时实参是一串带间隔符(如空格、逗号等)的字符串,为了不至于混淆,应用尖括号将它们括起来,作为一个实参。
例如:STACK0<500 DUP(0)>,尖括号的内容为一个实参。
2.数字参数
在某些情况下,需要以实参的值而不是符号本身代替形参,这种参数的替换称为数字参数的替换。特殊宏操作符%用来将其后的表达式转换成它所代表的数值,并将此数值的ASCII码字符嵌入到宏扩展中。
例如:
宏定义:DATA MACRO A,B,C,D
DWA,B,C
DBD DUP(0)
ENDM
宏调用:X=10(www.xing528.com)
Y=20
DATA%X+2,5,%X+Y,%Y-5
宏扩展:DW 12,5,30
DB 15D UP(0)
3.宏体中的变量与标号
在某些宏定义中,常常需要定义一些变量或标号,当这些宏定义在同一程序中多次调用并进行宏扩展后,就会出现变量或标号重复定义的错误。为了解决这个问题,8086宏汇编语言提供了伪指令LOCAL。
语句格式:LOCAL 标号和变量表
功能:在宏扩展时,宏汇编程序自动将用LOCAL说明的变量或标号表示为唯一的特殊符号(??0000~??FFFFH),从而避免了符号重复定义的错误。
LOCAL语句只能作为宏体的第一条语句,它后面即为宏定义的变量和标号表。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。