- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编8-A讲述
* * 宏(Macro)是汇编语言的一个特点,它是与子程序类似又独具特色的另一种简化源程序的方法 子程序:优:节省时间,节省空间,模块化 缺:增加转子指令及返回指令,保护现场, 参数传递 宏指令:缩短源代码,扩充指令集,改变助记符意 义 宏——具有宏名的一段汇编语句序列 ——宏定义时书写 宏指令——这段汇编语句序列的缩写 ——宏调用时书写 宏展开——宏指令处用这段宏代替的过程 ——宏汇编时实现 宏的参数功能强大,颇具特色 配合宏,还有宏操作符和有关伪指令 宏汇编 一般形式 宏指令名 MACRO [形式参数表] ... ; 宏定义体 ENDM #形式参数:宏定义体中使用的参数(哑元),非实际运行参数,在调用时需要用实在参数代替。 #宏定义体:一组指令序列,由指令语句和伪指令语句构成。 宏定义 宏调用的实质是在汇编过程中进行宏展开 宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,即用相应的宏定义体取代源程序的宏指令,同时用位置匹配的实参对形参进行取代 一般形式 宏指令名 [实在参数表] 宏调用 实在参数的类型与顺序应与宏定义时的形式参数一致。 宏展开时,若实在参数的个数多于形式参数,则忽略多余的实在参数;若实在参数的个数少于形式参数,则多余的形式参数为空。 宏定义只是告诉MASM用一个名字来表示一段语句序列,其本身不被汇编。 宏指令的参数非常灵活,可以出现在指令的操作数或操作码部分,MASM在宏展开时对参数进行文本替换。 宏调用 宏的参数 宏的参数使用非常灵活 #宏定义时, 可以无参数 可以带有一个参数或多个参数 定义一条宏指令PUSHA,由它实现把8 个通用寄存器全部压入堆栈的功能: PUSHA MACRO PUSH AX PUSH CX PUSH DX PUSH BX PUSH SP PUSH BP PUSH SI PUSH DI ENDM 在逻辑左移指令SHL 的基础上定义一条宏指令SHLN,它能实现指定次数的左移。 SHLN MACRO REG,NUM PUSH CX MOV CL,NUM SHL REG,CL POP CX ENDM 此后,可有如下格式的宏调用: SHLN BL,5 在汇编时,宏指令“SHLN BL,5”扩展成如下的代码: PUSH CX MOV CL,5 SHL BL,CL POP CX #参数可以是 常数、寄存器、存储单元、表达式(前例) #参数可以是操作码 宏指令MANDM 有三个参数,第一个参数OPR 作为操作符使用在宏体的指令中: MANDM MACRO OPR,X,Y MOV AX,X OPR AX,Y MOV X,AX ENDM 调用宏 MANDM 及其宏扩展如下所示: MANDM MOV [BX],[SI] 在汇编时,宏指令“MANDM MOV [BX],[SI] ”扩展成如下的代码: MOV AX,[BX]
文档评论(0)