汇编语言程序设计教程 教学课件 作者 王庆生 8.ppt

汇编语言程序设计教程 教学课件 作者 王庆生 8.ppt

ID:50328702

大小:168.00 KB

页数:57页

时间:2020-03-08

汇编语言程序设计教程 教学课件 作者 王庆生 8.ppt_第1页
汇编语言程序设计教程 教学课件 作者 王庆生 8.ppt_第2页
汇编语言程序设计教程 教学课件 作者 王庆生 8.ppt_第3页
汇编语言程序设计教程 教学课件 作者 王庆生 8.ppt_第4页
汇编语言程序设计教程 教学课件 作者 王庆生 8.ppt_第5页
资源描述:

《汇编语言程序设计教程 教学课件 作者 王庆生 8.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、第8章宏汇编及其它高级伪操作宏汇编语言提供了类似于高级语言的某些复杂功能,如宏汇编、重复汇编与条件汇编,提高了使用汇编语言进行程序设计的质量和效率。8.1宏汇编宏是源程序中一段有独立功能的程序代码。它只需要在源程序中定义一次,就可以多次调用,调用时只需要用一个宏指令语句就可以了。宏功能既可以实现程序复用,又能方便的传递多个参数。子程序优点:省存储空间优化程序结构便于调试和修改子程序缺点:调用、返回、保存、恢复需花开销参数传递复杂因此,在程序较短,或需要传送的参数较多的情况下,用宏汇编更加有利。8.1.1宏定义、宏调用和宏展开宏定义

2、:宏指令名MACRO[形参1,形参2,…]<宏定义体>ENDM宏定义体是一组有独立功能的程序代码。宏指令名给出宏定义的名称,调用时就使用宏指令名来调用宏定义。第一个符号必须是字符。哑元表给出了宏定义中所用到的形式参数,每个哑元之间用逗号隔开。宏调用:宏指令名[实参1,实参2,…]宏指令被定义后,在源程序中就可以直接调用,称为宏调用。一般说来,实参的个数应和形参的个数相等,但汇编程序并不要求它们必须相等。若实参个数大于形参个数,则多余的实参不予考虑,若实参个数小于形参个数,则多余的形参取空值。宏展开:在对源程序的汇编阶段,汇编程序对

3、源程序中的每个宏调用都进行了宏展开,即用宏定义体取代源程序中宏指令名,用实参取代形参。应该注意,用实参取代形参后,所得到的语句应该是有效的,否则汇编程序将会指示出错。例8.1用宏指令实现两个八位有符号数的乘法。宏定义:imultiplyMACROx,y,resultpushaxmoval,ximulymovresult,axpopaxENDM宏展开:1pushax1moval,cl1imuldl1mov[bx],ax1popax┇1pushax1moval,ary1imulvar1movsave,ax1popax宏调用:imult

4、iplycl,dl,[bx]…imultiplyary,var,save例8.2某工厂工人的周工资由计时工资和计件工资组成,计时工资按每小时工资率RATE乘以工作小时数计算;计件工资按超定额部分乘以SUP计算(超定额=实际完成的工件数MADE-定额工件数PART),工资总额放在WAGE中。宏定义如下:wagesmacrorate,hout,made,part,supwage=rate*hout+(made-part)*supendmrate=5part=100sup=4宏调用:wagesrate,40,120,part,sup宏展

5、开为:wage=rate*40+(120-part)*sup从以上两个例子可以看出,子程序和宏指令具有类似的功能,但又有以下区别:空间的区别:宏指令并不节省目标程序的空间,而子程序在目标程序中只有一段;时间的区别:宏指令在运行时不需要其他额外的CPU开销,而子程序的调用、返回和保护现场、恢复现场需要占用时间;参数的区别:宏调用可实现多个参数的直接代换,方式简单灵活,而子程序参数传递麻烦。8.1.2宏定义的嵌套这种嵌套结构的特点是外层宏定义的宏体中又有宏定义,只有调用外层宏定义一次后,才能调用内层宏指令。例8.3用嵌套的宏定义实现两

6、个八位数的算术运算。宏定义:mathMACROmathname,action,nummathnameMACROx,y,resulepushaxmovnum,xactionymovresultaxpopaxENDMENDM宏调用:mathimultiply,imul,al宏展开:imultiplyMACROx,y,resultpushaxmoval,ximulymovresult,axpopaxENDM宏调用:mathdivide,div,ax宏展开:divideMACROx,y,resultpushaxmovax,xdivymov

7、result,axpopaxENDM接下来可使用宏调用:divideary,var,save则宏展开如下:1pushax1movax,ary1divvar1movsave,ax1popax8.1.3宏定义中使用宏调用宏定义中使用的宏调用必须已经定义。例8.4用宏指令实现显示字符。宏定义:INT21MACROFUNCTNMOVAH,FUNCTNINT21HENDMDISPCMACROCHARMOVDL,CHARINT212ENDM宏调用:DISPC‘A’宏展开:1MOVDL,‘A’2MOVAH,22INT21H这里的2表示第二层展开

8、结果。8.1.4带间隔符的实参在宏调用中,有时实参使用的是字符串(不是单引号括起来的),而是字符串中包含间隔符(如空格、逗号等),为使间隔符成为实参的一部分,则要用尖括号将字符串括起来作为一个实参的整体来替换形参。例8.5在数据段中定义40个字节的

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

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

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