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

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

ID:58698072

大小:100.50 KB

页数:51页

时间:2020-10-04

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

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

1、第7章高级汇编语言技术7.1宏汇编7.2重复汇编7.3条件汇编1.宏汇编宏:源程序中一段有独立功能的程序代码。在源程序中定义一次,就可以多次调用它,调用时只需要一个宏指令语句。宏指令:用户自定义的指令。在编程时,将多次使用的功能用一条宏指令来代替。汇编语言程序指令伪指令(伪操作)宏指令7.1.1宏定义、宏调用和宏展开2、宏定义:macro_nameMACRO[哑元表];形参/虚参[LOCAL标号表]…………;宏定义体ENDM宏定义名的第一个符号必须是字母,其后可以跟字母、数字或下划线字符。哑元表给出了宏定义中所用到的形式参数(或称虚参),每个哑元之间用逗号隔开。4、宏

2、展开:汇编程序把宏调用展开宏展开就是用宏定义体取代源程序中的宏指令,而且用实元取代宏定义中的哑元。取代时实元和哑元应该一一对应,即第一个实元取代第一个哑元,第二个实元取代第二个哑元……依次类推。一般说来,实元的个数和哑元的个数相等,但汇编程序并不要求它们必须相等。若实元个数大于哑元个数,则多余的实元不予考虑;若实元个数小于哑元个数,则多余的哑元作“空”处理。注意:宏展开后,即用实元取代哑元后,所得到的语句应该是有效的,即汇编语法应是正确的,否则汇编程序将会指示出错。3、宏调用:(必须先定义后调用)macro_name[实元表];实参实元表中的每一项为实元,相互之间用逗

3、号隔开。优:模块化省内存缺:开销大宏定义:Qmacrox,y…endm主程序:…Qa,b…Qc,d…Qe,f…目标程序:………………优:参数传送简单,执行效率高缺:占用内存空间大主程序:…CALL----…CALL----…CALL----…子程序:………RET5.宏与子程序的区别例:两个字相乘宏定义:multiplyMACROopr1,opr2,resultpushdxpushaxmovax,opr1imulopr2movresult,axpopaxpopdxENDM宏调用:multiplycx,var,xyz[bx]宏展开:1pushdx1pushax1movax

4、,cx1imulvar1movxyz[bx],ax1popax1popdx例:保存寄存器宏展开:1pushax1pushbx1pushcx1pushdx1pushsi1pushdi宏定义:saveregMACROpushaxpushbxpushcxpushdxpushsipushdiENDM宏调用:savereg6、宏定义中的参数(1)宏定义中可以无变元(2)变元可以是操作码例:宏定义:FOOMACROP1,P2,P3MOVAX,P1P2P3ENDM宏调用:FOOWORD_VAR,INC,AX宏展开:1MOVAX,WORD_VAR1INCAX(3)变元可以是操作码的一

5、部分,但在宏定义体中必须用&作为分隔符。例:宏定义:LEAPMACROCOND,LABJ&CONDLABENDM宏调用:LEAPZ,THERELEAPNZ,HERE宏展开:1JZTHERE1JNZHERE(3)变元可以是操作码的一部分,但在宏定义体中必须用&作为分隔符。例:宏定义:LEAPMACROCOND,LABJ&CONDLABENDM宏调用:LEAPZ,THERELEAPNZ,HERE宏展开:1JZTHERE1JNZHERE说明:&是一个操作符,它在宏定义中可以作为哑元素的前缀,展开时可以把&前后两个符号合并而形成一个符号,这个符号可以是操作码、操作数或是一个字

6、符串。例:FOMACROP1JMPTA&P1ENDM宏调用:FOWORD_VAR宏展开:1JMPTAWORD_VAR如果宏定义为:FOMACROP1JMPTAP1ENDM则在展开时,汇编程序把TAP1看做是一个独立的标号,并不把TAP1中的P1作为哑元看待。例:变元是ASCII串宏定义:MSGGENMACROLAB,NUM,XYZLAB&NUMDB‘HELLOMR.&XZY’ENDM宏调用:MSGGENMSG,1,TAYLOR宏展开:1MSG1DB‘HELLOMR.TAYLOR’(4)变元中使用%操作符的情况,格式为%expression。汇编程序把跟在%之后的表达式

7、的值转换成当前基数下的数,在展开时,用这个数来取代哑元。宏定义:MSGMACROCOUNT,STRINGMSG&COUNTDBSTRINGENDMERRMSGMACROTEXTCNTR=CNTR+1MSG%CNTR,TEXTENDM宏调用:CNTR=0ERRMSG‘SYNTAXERROR’ERRMSG‘INVALIDOPERAND’宏展开:2MSG1DB‘SYNTAXERROR’2MSG2DB‘INVALIDOPERAND’实际展开分两层:CNTR=0CNTR=CNTR+11MSG%CNTR,’SYNTAXERROR’2MSG1DB‘SYNTAXER

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

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

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