专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »汇编语言 » 汇编宏的定义和引用 »正文

汇编宏的定义和引用

来源: 发布时间:星期三, 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条 分0页

发表评论

  • 昵称:
  • 内容: