《高级宏汇编语言》PPT课件.ppt

《高级宏汇编语言》PPT课件.ppt

ID:52376439

大小:203.01 KB

页数:19页

时间:2020-04-05

《高级宏汇编语言》PPT课件.ppt_第1页
《高级宏汇编语言》PPT课件.ppt_第2页
《高级宏汇编语言》PPT课件.ppt_第3页
《高级宏汇编语言》PPT课件.ppt_第4页
《高级宏汇编语言》PPT课件.ppt_第5页
资源描述:

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

1、第七章高级宏汇编语言为了象高级语言那样由程序员自定义更复杂的数据类型。80X86提供了宏指令语句,还具有条件汇编的能力。§1.宏指令在汇编语言源程序中,有些程序段要多次使用,我们引用子程序,但子程序有些缺点,转子和返回在保存和恢复断点寄存器以及参量的传递等开销要增加。若子程序本身较短,需要传递参量较多的情况下,使用宏汇编更方便。一.宏定义和宏调用1.定义:源程序中一段有独立功能的程序代码。(1)格式:<宏名称>MACRO[形参表]<宏体>ENDM(2)说明:1)宏在源程序中定义一次,可多次调用。2)宏名称:第一

2、个字母必须是字母,其后跟字母、数字或下划线字符(<=31个字符)3)宏定义体:一组独立功能的程序代码。4)形参(哑参)(虚参):形参间用,分隔。2.宏调用(1)格式:<宏名称>[实参表](2)说明:1)实参表:实元间用,隔开。实元可以是常数、register、存储单元。2)实元个数一般与哑元的个数相等。实际上,若实元个数>哑元个数多余实元不考虑。若实元个数<哑元个数多余哑元作“空”处理。3.宏展开宏定义体取代源程序中宏名称。用实元取代哑元。Ex:7.1用宏指令定义两个字操作数相乘得到一个16位的第三操作数(结果

3、)。MULTIPLYMACROOPR1,OPR2,RESULTPUSHDXPUSHAXMOVAX,OPR1IMULOPR2MOVRESULT,AXPOPAXPOPDXENDM宏定义宏调用MULTIPLYCX,VAR,XYZ[BX]形参实参4.宏定义和子程序的区别子程序:由主程序在执行期间调用,只占自身大小的一个空间。宏定义:宏调用是在汇编期间展开,每调用一次,宏定义体展开一次,因此占有的存储空间与调用次数有关,次数越多,空间愈大。较长的功能段用子程序,较短的且变元较多的功能段用宏定义。二.宏操作符常用的宏操作符

4、为4个:&、<>、%、!1.连接操作符&和文本操作符<>(1)&在定义体中,作为形参的前缀或后缀,展开时,把&前后两部分的符号,合并成一个新的符号。EX:J&CONTCONT:NZJNZCJCSJS(2)<>在宏调用时,有的实参中含有空格或逗号,这时用<>,把一个完整的实参括起来,作为一个单一的实参。Ex:宏定义MULTMACROOP,RESULT…MOVRESULT,AX宏调用MULTM,<WORDPTRRES>形参形参EX:OP&ULOP:MMULIMIMUL宏展开:MOVWORDPTRRES,AX2.表达

5、式操作符%和字符操作符(1)%格式:%<表达式>功能:取得表达式的值,在展开期间,用这个数取代形参。Ex:P2517.7(2)!指出!后的字符不作操作符使用,而是以字符本身的意义进行处理。Ex:!%(作为百分号用)三.局部符号伪操作LOCAL宏定义体中,允许使用符号,多次调用宏时,标号会多重定义,处理办法用LOCAL伪操作。1.格式:LOCAL局部标号名2.说明:LOCAL只能用在定义体中,且是macro伪操作的第一个语句,在macro和local间不允许有注释和分号标志。Ex:P2527.8四.宏库(P258

6、)将若干个宏定义组成一个宏库以库文件的形式存放起来。当程序需要使用这些宏定义时,只需用include伪指令说明库文件名,就可以在程序中直接调用库文件中的宏定义,而不需要重复编写这些宏定义。格式:INCLUDE库文件名(扩展名为.LIB)ex:在macro.lib中定义两个宏inputmacromovah,01hint21hendmdispmacrobufleadx,bufmovah,09hint21hendmex:P259Ab.asm…Includemacro.lib…Dispstr1…InputDispstr

7、2*其他伪操作.xall清单中只列出产生目标代码的宏展开   (默认情况).lall宏展开时列出包括注释在内的所有宏    展开.sall宏展开时,不列出任何展开的信息;;双分号注释,宏展开时,不予展开Ex:P2567.12*Purge伪操作用来删除不用的宏定义。用include语句调用宏库时可以用Purge伪操作删除在调用程序中不用的宏定义。这不会影响宏库中的内容。格式:Purge<宏名>Ex:purgepromptex1:编写一个把1位十六进制数字ASCII码符转换为对应二进制数的宏。hexbinmacro

8、hex_oper,resultlocalnextmoval,[hex_oper]subal,30hcmpal,10jbnextsubal,07hnext:andax,000fhmovresult,alendm;hex_oper---十六进制数字的ASCII码datasegmentAhexdb‘A’resultdb?dataendscodesegmentassumecs:code,ds:

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

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

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