汇编7-第七章.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编7-第七章

第七章?? 宏汇编 7.1 宏指令 7.2重复汇编 7.3条件汇编 7.1宏指令? 在汇编语言源程序中,有的程序段在整个程序中要多次出现。有的出现可能是完全不修改的重复,有的可能是仅修改程序段中某些操作数字段,而程序段的功能并无大的变化。为了使在源程序中不重复编写这个相同程序段,我们可以将这个程序段定义成一个“指令”,叫做宏指令。这样,在书写源程序时,可以简单地用宏指令名来代替原来的程序段,使源程序更加简洁、易读。例如在某个源程序中要多次用到对AX、BX、CX、DX的压栈,则可事先编写如下宏指令。 PUSHREG MACRO PUSH AX PUSH BX PUSH CX PUSH DX ENDM 则在后面的程序中,凡是需要对AX、BX、CX、DX的压栈的地方,就可以用PUSHREG来替代。 7.1.1 宏功能的使用过程 使用宏指令必须按照宏定义、宏调用、宏展开三步进行。 一、宏定义 应用宏指令之前,必须首先进行宏定义。用MACRO和ENDM伪指令进行宏定义。MACRO表示宏定义的开始,ENDM表示宏定义的结束。其格式有以下两种: (1)不带参数的宏定义: 宏名 MACRO : 宏体 : ENDM (2)带参数的宏定义: 宏名 MACRO 形参1,形参2,..... : 宏体 : ENDM 上述两种宏定义中,宏体是由若干语句序列组成的程序段。宏名就是给宏体中程序段指定一个符号名,亦是以后宏指令语句中调用该宏体直接引用的符号名。宏名在整个程序中应是唯一的。 不带参数的指令在每次宏调用时只需引用宏名,在宏展开时宏体内各语句序列均不作任何修改。 带参数的指令允许在宏调用中做适当修改,在宏定义中,把允许修改的部分用形式参数(简称形参)来表示,当宏调用时就用相应的实在参数(简称实参)来取代形式参数。形参可以是多个,各个形参之间用逗号相隔。例如对两个字节单元内容相互交换的程序段进行宏定义: EXCHANGE MACRO MEM1,MEM2,REG MOV REG,MEM1 XCHG REG,MEM2 MOV MEM1,REG ENDM 在上述宏定义中,有三个形参:MEM1、MEM2、REG,其中前两个表示将要进行交换的两个存储单元,最后一个参数表示实现两个存储单元数据进行交换时使用的寄存器。 宏定义可以进行嵌套。这时,宏体中语句序列除指令语句、伪指令语句外,可以是另一个已经定义的宏名。 二、 宏调用 经过宏定义,在源程序中任意位置可以调用宏指令。 宏调用格式: ·无参数宏调用: 宏名 ·带参数宏调用: 宏名 实参1,实参2,... 例如:对前面两个宏定义的调用: . . . PUSHREG . . . EXCHANGE BY1,BY2,AL . . : EXCHANGE DA_BYl,DA_BY2 : 宏汇编程序对带参数宏调用, 用第一个实参替代第一个形参, 第二个实参替代第二个形参, 以此类推。 因此,当实参是多个时, 实参的排列顺序要与形参的排列顺序一致. 若实参的个数比形参多,则多余实参自动被略去,若实参个数比形参少,那么多的形参自动用空白串替代. 三、 宏展开 当宏汇编程序扫描到宏指令语句(即宏调用)时,宏汇编程序就把宏定义中宏体的程序段目标代码插在宏指令语句的位置上以替代宏指令语句。若是带参数的宏调用,则同时用相应的实参代替宏体中对应形参的位置,并对原有宏体代码作修改。这样,在程序的目标代码中,每个宏指令语句位置上都包含相应宏体的目标代码,此宏指令的使用不会减少程序的目标代码长度。下面是一个源程序的列表文件,它展示了宏定义,宏调用和宏展开的全部过程。在列表文件中,左边带“+”号的指令是宏汇编程序在宏展开时自动生成的指令。宏定义本身不生成任何目标代码,宏指令语句(即宏调用)本身也不生成目标代码,它仅表示宏调用出现的位置。列表文件如下: ;宏定义 INPUT MACRO MOV AH,0lH INT 2lH AND AL,0FH ENDM ;宏定义 EXCHANG MACRO MEM1,MEM2,REG MOV REG,MEM1 XCHG REG,MEM2 MOV MEM1,REG ENDM ;设置数据段 DATA

文档评论(0)

bm5044 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档