IBM-PC汇编语言程序设计实例讲解.ppt

IBM-PC汇编语言程序设计实例讲解.ppt

ID:55828208

大小:316.00 KB

页数:31页

时间:2020-06-09

IBM-PC汇编语言程序设计实例讲解.ppt_第1页
IBM-PC汇编语言程序设计实例讲解.ppt_第2页
IBM-PC汇编语言程序设计实例讲解.ppt_第3页
IBM-PC汇编语言程序设计实例讲解.ppt_第4页
IBM-PC汇编语言程序设计实例讲解.ppt_第5页
资源描述:

《IBM-PC汇编语言程序设计实例讲解.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七章高级汇编语言技术宏汇编重复汇编条件汇编1方法2、当这组指令较短或不适合把它写成一个子程序时,可以把它义成一个宏,每次需要执行时就去调用这个宏。问如果在一个程序中多次使用同一组指令时,为了避免每次都要重写,该如何解决?方法1、把这组指令写成一个子程序,每次需要执行时只要调用这个子程序就可以了。27.1宏汇编为用户提供更加容易、更加灵活、更加向高级语言靠拢的汇编工具。宏:源程序中一段有独立功能的程序代码。宏指令:用户自定义的指令。在编程时,将多次使用的功能用一条宏指令来代替。汇编语言程序语句指令伪指令(伪操作)宏指令3子程序:优点:模块化,节省内存,可被多次调用,编程

2、效率高。缺点:额外开销(保存返回地址,计算转向地址,传递参数等)大,增加了执行时间。适用于子功能代码较长、调用比较频繁的情况。宏调用:优点:参数传送简单,执行效率高。缺点:不节省空间,适用于子功能代码较短、传参较多的情况。4宏定义macro_nameMACRO[哑元表];形参/虚参[LOCAL标号表]…………ENDM*macro_name宏指令名(宏名),调用时用。 第一个符号必须是字母(注意与名称的差异)*[哑元表]形参表,哑元之间用逗号隔开*如果宏定义体有一个或多个标号,则必须用LOCAL伪操作列出所有的标号。???(宏定义体)一段有独立功能的程序代码5宏调用mac

3、ro_name[实元表];实参*实元表中的实元与哑元表中的哑元在位置上一一对应;*若实元数>哑元数,则多余的实元无效;*若实元数<哑元数,则多余的哑元作“空(NUL)”处理;*对宏指令的调用必须先定义后调用。*应当注意,宏展开后,即用实参取代形式参数之后,所得到的语句应该是有效的,否则汇编时会出错。6宏展开源程序被汇编时,汇编程序把宏调用展开,也就是把宏定义体复制到调用宏指令的位置上,同时用实元取代哑元,由LOCAL定义的标号也由??0000~??FFFF替代。7实元(在使用上要比子程序灵活)常数、寄存器、存贮单元用寻址方式能找到的地址、表达式指令的操作码、操作码的一部

4、分8宏调用与子程序调用的区别:子程序:在程序执行期间被调用,只占用自身大小的一段空间。主程序……callsub1……callsub1……callsub1……子程序sub1………………ret9宏调用:在汇编期间被展开,每调用一次就把宏定义体展开一次。宏定义宏调用宏展开Qmacrox,yendm……Qa,b……Qc,d……Qe,f…………………………10(1)子程序调用是在程序执行期间进行的,主程序通过CALL指令转入于程序的入口地址去执行子程序,子程序执行完后RET指令返回到主程序的调用处(断点处);而宏调用是通过宏指令名和实在参数(如果有要传递的参数的话)进行调用的,而

5、且是在汇编期间展开宏定义体的。(2)子程序中的这组指令的机器码在存储器中只需要存放一次;而宏调用则不同,每调用一次就把宏定义体展开一次,因而它占有的存储空间与调用次数有关,调用次数越多则占有的存储空间就越大。(3)子程序调用时需要用堆栈,调用子程序和返回主程序都要开销必要的时间;而宏调用其宏定义体展开是插入在调用程序中,因此避免了调用时跳到宏和由宏返回所开销的时间。子程序与宏调用工作方式的差异如何选择用子程序还是用宏调用呢?11可以无变元可以是操作码可以是操作码的一部分,但在宏定义体中必须用&来分隔。变元是ASCII串%操作符7.1.2宏定义中的参数127.1.3LOC

6、AL伪操作在宏定义中允许使用标号。如果在程序中多次使用该宏定义时。展开后会出现标号的多重定义,这是不允许的。但是可以用伪指令LOCAL指定局部标号。[格式]LOCAL局部标号表[说明]其中,局部标号表中的各标号之间用逗号分隔。汇编程序在汇编时对局部中标号表中的各标号建立唯一的符号(??000一??FFFF)以取代展开后的各局部标号。该伪指令必须是宏定义体中的第一个语句,而且在MACRO和LOCAL之间还不允许有注释和分号标志。137.1.4在宏定义体内使用宏限制条件:必须先定义后调用在宏定义体内不仅可以使用宏,也可以可以包含宏定义(也就是说,宏定义允许嵌套)147.1.

7、5列表伪操作.XALL默认值,只列出产生目标码的宏展开.LALL列出包括注释在内的所有宏展开.SALL不列出任何展开信息功能:控制汇编清单中宏展开的列出情况.LISTMACROALL.LISTMACRO.NOLISTMACROMASM6.0+;;注释;宏展开时,;;后面的注释不予展开。源程序(ASM文件)经汇编程序汇编,主要输出是OBJ文件和LST文件(列表文件)。LST文件同时列出源程序和机器语言程序清单,并给出符号表。157.1.6宏库的建立与调用宏库:只包含若干宏定义的文件,扩展名为MAC或LIB宏库的调用:在程序的开始用INCLU

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

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

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