第七章 高级汇编语言技术ppt课件.ppt

第七章 高级汇编语言技术ppt课件.ppt

ID:58693582

大小:218.00 KB

页数:77页

时间:2020-10-04

第七章 高级汇编语言技术ppt课件.ppt_第1页
第七章 高级汇编语言技术ppt课件.ppt_第2页
第七章 高级汇编语言技术ppt课件.ppt_第3页
第七章 高级汇编语言技术ppt课件.ppt_第4页
第七章 高级汇编语言技术ppt课件.ppt_第5页
资源描述:

《第七章 高级汇编语言技术ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1、宏汇编2、重复汇编3、条件汇编第七章高级汇编语言技术如果在一个程序中多次使用同一组指令时,为了避免每次都要重写,该如何解决?方法1:把这组指令写成一个子程序,每次需要执行时调用这个子程序就可以了。方法2:当这组指令较短或不适合把它写成一个子程序时,可以把它定义成一个宏,每次需要执行时就去调用这个宏。7.1宏汇编为用户提供更加容易、更加灵活、更加向高级语言靠拢的汇编工具。宏:源程序中一段有独立功能的程序代码。宏指令:用户自定义的指令。在编程时,将多次使用的功能用一条宏指令来代替。宏定义macro_nameMACRO[哑元表];形参/虚参……(宏定义体)……ENDMmacro_name宏指令

2、名(宏名),调用时用。 [哑元表]形参表,哑元之间用逗号隔开一段有独立功能的程序代码宏调用格式:macro_name[实元表];实参实元表中的实元与哑元表中的哑元在位置上一一对应;若实元数大于哑元数,则多余的实元无效;若实元数小于哑元数,则多余的哑元作“空(NUL)”处理;对宏指令的调用必须先定义后调用。注意:宏展开后,即用实参取代形式参数之后,所得到的语句应该是有效的,否则汇编时会出错。例1:用宏指令定义两个字操作数相乘,得到一个16位的第三个操作数作为结果。宏定义:MULTIPLYMACROOPR1,OPR2,RESULTPUSHDXPUSHAXMOVAX,OPR1IMULOPR2MOV

3、RESULT,AXPOPAXPOPDXENDM宏调用:MULTIPLYCX,VAR,XYZ[BX]MULTIPLY240,BX,SAVE宏展开源程序被汇编时,汇编程序把宏调用展开,也就是用宏定义体取代源程序中的宏指令名,同时用实元取代哑元,所展开的指令前加上1表示这些宏指令是由宏展开而得到的较早的版本用+符号表示宏展开:1PUSHDX1PUSHAX1MOVAX,CX1IMULVAR1MOVXYZ[BX],AX1POPAX1POPDX1PUSHDX1PUSHAX1MOVAX,2401IMULBX1MOVSAVE,AX1POPAX1POPDX宏调用与子程序调用的区别:子程序:在程序执行期间被调用

4、,只占用自身大小的一段空间。主程序……CALLsub1……CALLsub1……CALLsub1……子程序sub1………………ret宏调用:在汇编期间被展开,每调用一次就把宏定义体展开一次。宏定义宏调用宏展开Qmacrox,yendm……QA,BQC,D……QE,F………………………………子程序与宏调用工作方式的差异1)子程序调用是在程序执行期间进行的,主程序通过CALL指令转入于程序的入口地址去执行子程序,子程序执行完后RET指令返回到主程序的调用处(断点处);而宏调用是通过宏指令名和实在参数(如果有要传递的参数的话)进行调用的,而且是在汇编期间展开宏定义体的。(2)子程序中的这组指令的机器

5、码在存储器中只需要存放一次;而宏调用则不同,每调用一次就把宏定义体展开一次,因而它占有的存储空间与调用次数有关,调用次数越多则占有的存储空间就越大(3)子程序调用时需要用堆栈,调用子程序和返回主程序都要开销必要的时间;而宏调用其宏定义体展开是插入在调用程序中,因此避免了调用时跳到宏和由宏返回所开销的时间。如何选择用子程序还是用宏调用呢?一般来说,由于宏汇编可能占用较大的空间,所以代码较长的功能段往往使用子程序而不用宏汇编;而那些较短的且变元较多的功能段,则使用宏汇编比较合理。7.1.2宏定义中的参数可以无变元可以是操作码可以是操作码的一部分,但在宏定义体中必须用&来分隔。变元是ASCII串%

6、操作符例7.2宏定义可以无变元。SAVEREGMACROPUSHAXPUSHBXPUSHCXPUSHDXPUSHSIPUSHDIENDM例7.3变元可以是操作码。FOOMACROP1,P2,P3MOVAX,P1P2P3ENDM宏调用:FOOWORD_VAR,INC,AX宏展开:1MOVAX,WORD_VAR1INCAX例7.4变元可以是操作码的一部分,但在宏定义体中必须用&作为分隔符。LEAPMACROCOND,LABJ&CONDLABENDM宏调用:LEAPZ,THERELEAPNZ,HERE宏展开:1JZTHERE1JNZHERE&是一个操作符,它在宏定义体中可以作为哑元的前缀,展开时可

7、以把&前后两个符号合并而形成一个符号,这个符号可以是操作码、操作数或是一个字符串。例7.5宏定义:FOMACROP1JMPTA&P1ENDM宏调用:FOWORD_VAR宏展开:1JMPTAWORD_VAR如果宏定义写为:FOMACROP1JMPTAP1ENDM则在展开时,汇编程序把TAP1看作是一个独立的标号,并不把TAP1中的P1作为哑元看待,这样就不能达到预期的结果。例7.6变元是ASCII串。MSGGE

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

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

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