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

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

ID:59439873

大小:242.50 KB

页数:52页

时间:2020-09-18

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

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

1、宏汇编重复汇编条件汇编第七章高级汇编语言技术11.宏汇编宏:源程序中一段有独立功能的程序代码。宏指令:用户自定义的指令。在编程时,将多次使用的功能用一条宏指令来代替。汇编语言程序指令伪指令(伪操作)宏指令2宏展开:汇编程序把宏调用展开就是用宏定义体取代源程序中的宏指令名,实元取代哑元。宏定义:macro_nameMACRO[哑元表];形参/虚参[LOCAL标号表]…………;宏定义体ENDM宏调用:(必须先定义后调用)macro_name[实元表];实参3关于宏展开宏展开实元和哑元一一对应第一个实元取代第一个哑元,第二个实元取代第二个哑元实元

2、个数大于哑元个数多余的实元不予考虑实元个数小于哑元个数多余的哑元作“空”处理宏展开后,所得到的语句应该是有效的,否则汇编程序将会指示出错。4例:用宏指令定义两个操作数相乘,得到一个16位的第三个操作数作为结果。MULTIPLYMACROOPR1,OPR2,RESULTPUSHDXPUSHAXMOVAX,OPR1IMULOPR2MOVRESULT,AXPOPAXPOPDXENDM宏定义:5宏调用MULTIPLYCX,VAR,XYZ[BX]…MULTIPLY240,BX,SAVE…61PUSHDX1PUSHAX1MOVAX,CX1IMULVAR1MO

3、VXYZ[BX],AX1POPAX1POPDX宏展开71PUSHDX1PUSHAX1MOVAX,2401IMULBX1MOVSAVE,AX1POPAX1POPDX宏展开8主程序X<—A,Y<—BCALLQX<—C,Y<—DCALLQX<—E,Y<—FCALLQQPROC……RETQPROC……RETQPROC……RETQPROC……RETQPROC……RETQPROC……RET子程序Q(X,Y)子程序调用与宏调用9QA,BQC,DQE,FQMACROX,YENDM主程序主程序Q(A,B)Q(A,B)宏体Q(A,B)汇编时展开展开10宏调用与子程序

4、调用的区别:子程序:在程序执行期间被调用,只占用自身大小的一段空间。宏调用:在汇编期间被展开,每调用一次就把宏定义体展开一次。11子程序:优点:模块化,节省内存,可被多次调用,编程效率高。缺点:额外开销(保存返回地址,计算转向地址,传递参数等)大,增加了执行时间。适于子功能代码较长、调用比较频繁的情况。宏调用:优点:参数传送简单,执行效率高。缺点:不节省空间,适于子功能代码较短、传参较多的情况。12例:保存寄存器宏定义:saveregMACROpushaxpushbxpushcxpushdxpushsipushdiENDM宏调用:savereg宏

5、展开:1pushax1pushbx1pushcx1pushdx1pushsi1pushdi7.1.2宏定义中的参数1、宏定义中可以没有变元132、变元可以是操作码例:定义:A1MACROP1,P2,P3,P4MOVAX,P1P2P3,P4ENDM调用:A1VAR1,ADD,AX,BX展开:1MOVAX,VAR11ADDAX,CX143、变元可以是操作码的一部分(注:宏体中必须用&作为分隔符)例:宏定义:LEAPMACROOPR1,LABJ&OPR1LAB宏调用:LEAPZ,YES宏展开:1JZYES15NOTE:&是一个操作符,它在宏定义中作为哑

6、元的前缀,展开时可以把&前后两个符号合并形成一个符号,这个符号可以是操作码、操作数或是一个字符串。16例:宏定义:FOMACROP1JMPTA&P1ENDM宏调用:FOWORD_VAR宏展开:1JMPTAWORD_VAR4、变元是操作数的一部分175、变元是字符串宏定义:MSGGENMACROLAB,NUM,XYZLAB&NUMDB‘HELLOMR.&XYZ’ENDM宏调用:MSGGENMSG,1,TAYLOR宏展开:1MSG1DB‘HELLOMR.TAYLOR186、变元可以使用%操作符格式:%表达式含义:把跟在%之后的表达式的值转换成当前基数

7、下的数,展开时用这个数来取代哑元。19例:宏定义:MSGMACROCOUNT,STRINGMSG&COUNTDBSTRINGENDMERRMSGMSCROTEXTCNTR=CNTR+1MSG%CNTR,TEXTENDM宏调用:CNTR=0ERRMSG‘SYNTAXERROR’ERRMSG‘INVALIDOPERAND’…宏展开:2MSG1DB‘SYNTAXERROR’宏展开:2MSG2DB‘INVALIDOPERAND’207.1.3LOCAL伪操作格式:LOCAL标号1,标号2·····21例:宏定义:ABSOLMACROOPERLOCALNE

8、XTCMPOPER,0JGENEXTNEGOPERNEXT:ENDM22宏调用:ABSOLVARABSOLBX宏展开:1CMPVAR,0

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

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

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