汇编语言程序设计 教学课件 作者 何超 第7章 宏和多模块程序设计.ppt

汇编语言程序设计 教学课件 作者 何超 第7章 宏和多模块程序设计.ppt

ID:50177522

大小:2.29 MB

页数:111页

时间:2020-03-09

汇编语言程序设计 教学课件 作者 何超 第7章 宏和多模块程序设计.ppt_第1页
汇编语言程序设计 教学课件 作者 何超 第7章 宏和多模块程序设计.ppt_第2页
汇编语言程序设计 教学课件 作者 何超 第7章 宏和多模块程序设计.ppt_第3页
汇编语言程序设计 教学课件 作者 何超 第7章 宏和多模块程序设计.ppt_第4页
汇编语言程序设计 教学课件 作者 何超 第7章 宏和多模块程序设计.ppt_第5页
资源描述:

《汇编语言程序设计 教学课件 作者 何超 第7章 宏和多模块程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章宏和多模块程序设计7.1宏7.2宏嵌套7.3重复汇编伪指令和条件汇编伪指令7.4宏汇编语言源程序举例和宏与子程序的区别7.5多模块程序设计7.6汇编语言与高级语言的连接7.1宏7.1.1宏定义7.1.2宏调用7.1.3宏展开7.1.4宏的参数传递7.1.5特殊宏操作符7.1.6宏中的变量和标号返回首页7.1.1宏定义一、在使用宏之前必须先定义宏,宏的定义是使用伪指令MACRO和ENDM来实现的。1.宏定义的一般格式:宏名MACRO[形参1,形参2,……]……………………;宏的定义体ENDM(1)宏名:由程序员指定的一个合法的标识符,它代表该宏。宏名可以与指

2、令助忆符、伪指令名相同,在这种情况下,宏指令优先。建议宏名尽可能不要与指令助忆符、伪指令相名,以免引起不必要的误会。(2)MACRO和ENDM是二个必须成对出现的关键字,它们分别表示宏定义的开始和结束,在ENDM的前面不要再写一次宏名,这与段或子程序定义的结束方式有所不同;(3)“宏体”:MACRO和ENDM之间的部分,由指令、伪指令或引用其它宏所组成的程序片段,是宏所包含的具体内容;(4)在宏定义的首部可以列举若干个形式参数,每个参数之间要用逗号分隔。(形式参数:定义中仅指明了使用哪些参数(参数名),但未具体说明参数值。实参数:参数值在引用宏时给出。)【例7-

3、1】定义一个实现两个16位的带符号数存储变量相加的宏。宏名为MADDM。解:程序段如下:MADDMMACROOPRD1,OPRD2;定义一个宏名为MADDM,;形参为OPRD1和OPRD2的宏MOVAX,OPRD2;本句和下句为宏体中的内;容ADDOPRD1,AX;实现两数相加,结果送;OPRD1变量ENDM;宏定义结束上述宏定义虽然能满足题目的要求,但由于在定义体中改变了寄存器AX的值,这就使宏的引用产生了一定的副作用。为了使寄存器AX的使用变得透明,可把该宏定义改成如下形式:MADDMMACROOPRD1,OPRD2;定义一个宏名为MADDM,形参为OPRD

4、1和OPRD2的宏PUSHAX;将AX寄存器的内容压入堆栈;保护AX存器的值MOVAX,OPRD2;ADDOPRD1,AXPOPAX;恢复AX寄存器的值ENDM;宏定义结束通过在宏定义的开始和结尾分别增加对所用寄存器的保护和恢复指令,就使得对该宏的任意引用都不会产生任何副作用。返回本节7.1.2宏调用一、在源程序中,一旦定义了某宏,那么,在该程序的任何位置都可直接引用该宏,而不必重复编写相应的程序段。1.引用宏的一般格式如下:宏名[实参1,实参2,……]说明:(1).宏名必须与宏定义中的宏名一致;(2).实参的位置要与形参的位置要对应,但实参的个数可以与形参的个

5、数不相等。当实参的个数多于形参的个数时,多出的实参被忽略;当实参的个数少于形参的个数时,没有实参对应的形参用“空”来对应。但在宏展开时,所得到的指令必须是合法的汇编指令,否则,汇编程序将会给出出错信息。例如:调用例7-2所定义的宏DISPMSG,实现字符串的输出。程序段如下:………………DISPMSGMESSAGE1………………DISPMSGMESSAGE2………………DISPMSGMESSAGE3返回本节7.1.3宏展开一、定义在源程序中,由于宏定义在前,宏调用在后,宏汇编程序在汇编期间,将先扫描宏定义,将宏名、形参、宏体均填入宏定义表中,以后遇到宏调用时,则

6、嵌入宏体,并用实参按位置对应关系一一替换宏体中的形参,这一过程称为宏展开。宏展开是在汇编期间由汇编程序自动完成的。针对上述的三次宏调用,其展开后得到下列语句:第一次宏调用后,展开的语句序列。………………PUSHDXPUSHAXLEADX,MESSAGE1MOVAH,09HINT21HPOPAXPOPDX第二次宏调用后,展开的语句序列。………………PUSHDXPUSHAXLEADX,MESSAGE2MOVAH,09H;INT21HPOPAXPOPDX第三次宏调用后,展开的语句序列。………………PUSHDXPUSHAXLEADX,MESSAGE3MOVAH,09H;

7、INT21HPOPAXPOPDX………………宏调用时,在汇编期间被展开,调用一次展开一次。虽然多占用一些空间,但是使用方便,适合短代码程序段。返回本节7.1.4宏的参数传递一、在引用宏时,参数是通过“实参”替换“形参”的方式来实现传递的。注意:(1)参数可以是常数、寄存器、存储单元和表达式,还可以是指令的操作码。(2)由以上程序段可知,宏使用的参数非常灵活,但在宏展开后,所得到的指令必须是合法的汇编指令--如下例:【例7-3】定义一个实现两个带符号的16位数相乘的宏,宏名为MULTIPLY,并在源程序中调用该宏。解:程序段如下:;宏定义MULTIPLYMACR

8、OOPR1,OPR2,R

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。