第7章 编程中的高级处理技术 汇编语言程序设计 教学课件.ppt

第7章 编程中的高级处理技术 汇编语言程序设计 教学课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 编程中的高级处理技术 汇编语言程序设计 教学课件

code SEGMENT ASSUME CS:code main: dispch dispch MOV AH,back INT dosint code ENDS END main 【解】宏展开后的结果是: + MOV AH,2 + MOV DL, * + INT 21H + MOV AH,2 + MOV DL, * + INT 21H MOV AH,4CH INT 21H 由于宏展开是汇编程序翻译的一个步骤,宏展后的结果并不是源程序,所以展开后不再写出完整的程序格式,只列出有效指令部分。 可以看到,汇编程序对宏调用与已定义的常量及符号的引用的处理是很类似的,定义部分在汇编处理结束后就已完成它的作用。汇编程序翻译后得到的机器代码中没有宏、常量等的定义,只是调用或引用部分被代换成宏体或定义的内容。宏与常量定义及符号定义的差别在于,常量及符号定义都必须在一行写完,对常量和符号的引用只能代换指令中的操作数,或者操作数的一部分,宏调用则可以代换一段程序。不仅如此,宏还允许代换的内容有个别地方不同,这是通过带参数的宏实现的。 7.3.3 带参数的宏 如果宏只能对完全相同的程序段进行复制,那就没有多大的应用价值了,宏的好处主要体现在每次调用而展开的宏体可以不同。这需要在宏定义时以形式参数指明宏体中的哪些部分可以被不同的实际参数代替,每次调用时在宏名字的后面附带实际参数。完整的宏定义格式是: 宏名 MACRO [形式参数表] 宏体 ENDM 形式参数可以出现在宏体中的任何位置,可以在操作数中,可以在指令助记符的位置,甚至还可以是其中的一部分。下面的几个例子用来说明参数的各种不同用法。 【例7.11】普通用法,形式参数出现在操作数的位置。 dch MACRO x MOV AH,2 MOV DL,x INT 21H ENDM 源程序中调用宏dch时,应该在宏名字的后面跟一个实际参数,从例7.11的宏体可以看出,这个实际参数应该是用于屏幕显示的一个ASCII字符。因而,源程序中用下面的写法连续两次调用上述宏,就可以实现回车换行操作。宏展开时,对每一次宏调用,将分别以相应的实际参数代换宏体中的形式参数。 dch 13 dch 10 【例7.12】形式参数可以出现在助记符的位置。 cc MACRO cmd,lab CMP AX,BX cmd lab ENDM 上述宏在调用时可以用不同的实际参数代换形式参数cmd,使得宏体中的第2行是不同的指令。比如下面是几个调用的例子,请读者自己写出宏展开的结果。 cc JG,n1 cc JBE,n2 cc JNZ,n3 【例7.13】宏的形式参数可以作为一个标识符的一部分。这时,必须用符号“”把形式参数与标识符的其余部分分开。例7.12中的宏定义还可以写成下面的形式: cc1 MACRO cmd,lab CMP AX,BX Jcmd lab ENDM 宏体中第2行的Jcmd就是在一个标识符中(例7.13中表现为指令助记符)含有形式参数,符号“”用于把形参cmd从标识符中分离出来。如果没有分隔符号“”,汇编程序将把Jcmd作为一个整体处理,而不知道其中的cmd是形参。 对例7.12后面的3个调用,调用例7.13中的宏可以达到同样的效果,相应写法是: cc1 G,n1 cc1 BE,n2 cc1 NZ,n3 【

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档