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

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

ID:58883849

大小:210.00 KB

页数:69页

时间:2020-09-30

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

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

1、高级汇编语言技术第7章1ch77.1宏汇编为什么使用宏汇编?在编制汇编语言程序过程中,有些功能程序段需要多次重复使用,所不同的只是参与操作的操作数。为了减少编程的工作量,通常采用两种方法:①将程序段编写为独立的子程序②将程序段定义成宏宏概念宏(或宏指令)是源程序中一段有独立功能的程序代码,只需定义一次,可以多次使用。第7章2ch71.宏定义用伪指令MACRO/ENDM实现,其语句格式是:宏指令名MACRO[形参1,形参2,…,形参n]┇宏定义体ENDM7.1.1宏定义、宏调用和宏展开3ch7说明宏指令名是该宏

2、定义的名称。调用时使用宏指令名对该宏定义进行调用。宏指令符合标识符规定。宏指令名不能重复,并且指令的第一个字符必须是字母。MACRO必须与ENDM成对出现。MACRO标识宏定义的开始。形式参数(即形参,也称哑元、虚参)是可选项,宏可以不带参数;带参数时,多个形参间用逗号分隔。第7章4ch72.宏调用宏调用的格式为:宏指令名[实参1,实参2,…,实参n]宏展开宏展开就是宏定义体取代源程序中的宏指令名,而且用实元取代哑元。汇编源程序时,宏汇编程序将对每条宏指令语句进行宏展开,用实参替代相应的形参,对宏体目标代码作

3、相应改变。说明:实参可以是常数、寄存器、存储单元、地址表达式、指令的操作码或者是操作码的一部分。第7章5ch7CallQCallQCallQQ:RET子程序QQA,BQC,DQE,FQMACROX,YENDM主程序主程序主程序展开子程序调用和宏调用的工作方式第7章6ch7例7.1用宏指令定义两个字操作数相乘,得到一个16位的第三个操作数作为结果。宏定义:Multiplymacroopr1,opr2,resultpushdxpushaxmovax,opr1imulopr2movresult,axpopaxpop

4、dxendm第7章7ch7宏调用:……Multiplycx,var,xyz[bx]……Multiply240,bx,save……第7章宏展开:……pushdxpushaxmovax,cximulvarmovxyz[bx],axpopaxpopdx……pushdxpushaxmovax,240imulbxmovsave,axpopaxpopdx……8ch77.1.2宏定义中的参数例7.2宏定义可以无变元saveregmacropushaxpushbxpushcxpushdxpushsipushdiendm例7.

5、3变元可以是操作码amacrop1,p2,p3movax,p1p2p3endm调用:aword_var,inc,ax展开:movax,word_var1incax第7章宏调用savereg,宏展开则将宏定义内容全部列出9ch7例7.4变元可以是操作码或操作数的一部分,但在宏定义体中必须使用分隔符&,即&是操作符,在宏定义中可作为形参的前缀,展开时把&前后的两个符号连接起来,形成操作码、操作数或字符串。&只能出现在宏定义中。宏定义:LEAPMARCOCOND,LABJ&CONDLABENDM宏调用:…LEAPZ

6、,THERE…LEAPNZ,HERE…宏展开:…JZTHERE…JNZHERE…10ch7例7.5宏定义:fomacrop1jmpta&p1endm宏调用:foword_var宏展开:1Jmptaword_var如果宏定义为:fomacrop1jmptap1endm宏调用:foword_var宏展开时,TAP1被看作一个独立的标号,并不把TAP1中的P1作为亚元看待,不能得到预期的结果。11ch7例7.6变元是ASCII串宏定义:MSGGENmacroLAB,NUM,XYZLAB&NUMDB‘HELLOMR.

7、&XYZ’endm宏调用:MSGGENMSG,1,TAYLOR宏展开:MSG1DB‘HELLOMR.TAYLOR’12ch7例7.7宏定义中的伪操作符%。其格式为:%expression汇编程序把跟在%后面的表达式的值转换为当前基数下的数,用这个数来取代亚元。宏定义:MSGMACROCOUNT,STRINGMSG&COUNTDBSTRINGENDMERRMSGMACROTEXTCNTR=CTNR+1MSG%CNTR,TEXTENDM宏调用:……CNTR=0ERRMSG‘SYNTAXERROR’……ERRMSG

8、‘INVALIDOPERAND’……宏展开:……MSG1‘SYNTAXERROR’……MSG2‘INVALIDOPERAND’……相当于以下两层展开:。。。。。CNTR=01CNTR=CNTR+11MSG%CNTR,’SYNTAXERROR’2MSG1DB‘SYNTAXERROR’1CNTR=CNTR+11MSG%CNTR,‘INVALIDOPERAND’2MSG2DB‘INVALIDOPERAND

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

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

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