汇编宏的定义和引用来源: 发布时间:星期三, 2008年12月10日 浏览:2次 评论:0
宏是设计另个基本概念它是把段代码用个特定标识符(即:宏名)来表示这样在编写源时员就可以直接使用该标识符来代替段代码编写从而减少了重复代码编写工作也为减少提高可维护性提供了帮助宏在高级语言(如:C/C等)也有广泛使用
9.1宏定义和引用 通常情况下宏是用来代表个具有特定功能段它只需在源中定义次但可在源中引用多次只要在编写时需要就可以直接使用它 9.1.1宏定义 在使用宏之前必须先定义宏定义宏般格式如下: 宏名MACRO [形参1,形参2,……] …;宏定义体 ENDM 在书写宏定义时必须遵照下列规定: 、MACRO和ENDM是二个必须成对出现关键字它们分别表示宏定义开始和结束; 、MACRO和ENDM之间部分是宏定义体它是由指令、伪指令或引用其它宏所组成片段是宏所包含具体内容; 、“宏名”是由员指定个合法标识符它代表该宏; 、宏名可以与指令助忆符、伪指令名相同在这种情况下宏指令优先而同名指令或伪指令都失效; 、在ENDM前面不要再写次宏名这与段或子定义结束方式有所不同; 、在宏定义首部可以列举若干个形式参数每个参数之间要用逗号分隔 根据上述规定我们提倡宏名尽可能不要与指令助忆符、伪指令相名以免引起不必要误会 例9.1定义个把16位数据寄存器压栈宏 PUSHRMACRO PUSHAX PUSHBX PUSHCX PUSHDX ENDM 例9.2定义二个字存储变量相加宏 MADDMMACRO OPRD1,OPRD2 MOVAX,OPRD2 ADDOPRD1,AX ENDM 上述宏定义虽然能满足题目要求但由于在定义体中改变了寄存器AX值这就使宏引用产生了定副作用为了使寄存器AX使用变得透明可把该宏定义改成如下形式: MADDMMACRO OPRD1,OPRD2 PUSHAX MOVAX,OPRD2 ADDOPRD1,AX POPAX ENDM 通过在宏定义开始和结尾分别增加对所用寄存器保护和恢复指令就使得:对该宏任意引用都不会产生任何副作用 0
相关文章读者评论
发表评论 |