语言——宏讲课教案.ppt

语言——宏讲课教案.ppt

ID:59817114

大小:608.50 KB

页数:44页

时间:2020-11-25

语言——宏讲课教案.ppt_第1页
语言——宏讲课教案.ppt_第2页
语言——宏讲课教案.ppt_第3页
语言——宏讲课教案.ppt_第4页
语言——宏讲课教案.ppt_第5页
资源描述:

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

1、汇编语言——宏(3)宏定义仅仅用来告诉汇编程序,将来宏调用时复制的对象是什么,宏定义中的程序段并不是程序的一部分,也就是说,如果程序中定义了一个宏而没有调用它,汇编程序将忽略宏定义。(4)宏定义可以写在程序的任何地方,但习惯上总是把宏定义写在程序的最前面。宏定义与编辑器中的文字块的定义有相似之处,也有一些差别。两者都需要以特定的方式说明开始和结束的位置。文字块是文件的一部分,而宏体中的程序段必须经过宏调用才能复制到源程序中正确的位置,没有被调用的宏体在汇编程序翻译时会被忽略。7.3.2宏调用定义后的宏名又称为宏指令

2、。经宏定义后,就可以在源程序中调用宏了。宏调用的方式是在源程序中需要复制宏体的地方写宏的名字。宏名单独占一行,当源程序被汇编时,汇编程序将对宏调用进行宏体复制,并取代宏名,这种复制操作称为宏展开。为了与源程序的其它部分相区别,后面的叙述中,对由宏调用而展开后得到的指令,都在前面标以加号“+”以示区别。【例7.10】参照汇编程序的处理方法,对下面程序中的宏进行展开。back=4CHdosintEQU21HdispchMACROMOVAH,2MOVDL,'*'INT21HENDMcodeSEGMENTASSUMECS:

3、codemain:dispchdispchMOVAH,backINTdosintcodeENDSENDmain【解】宏展开后的结果是:+MOVAH,2+MOVDL,'*'+INT21H+MOVAH,2+MOVDL,'*'+INT21HMOVAH,4CHINT21H由于宏展开是汇编程序翻译的一个步骤,宏展后的结果并不是源程序,所以展开后不再写出完整的程序格式,只列出有效指令部分。可以看到,汇编程序对宏调用与已定义的常量及符号的引用的处理是很类似的,定义部分在汇编处理结束后就已完成它的作用。汇编程序翻译后得到的机器代码

4、中没有宏、常量等的定义,只是调用或引用部分被代换成宏体或定义的内容。宏与常量定义及符号定义的差别在于,常量及符号定义都必须在一行写完,对常量和符号的引用只能代换指令中的操作数,或者操作数的一部分,宏调用则可以代换一段程序。不仅如此,宏还允许代换的内容有个别地方不同,这是通过带参数的宏实现的。7.3.3带参数的宏如果宏只能对完全相同的程序段进行复制,那就没有多大的应用价值了,宏的好处主要体现在每次调用而展开的宏体可以不同。这需要在宏定义时以形式参数指明宏体中的哪些部分可以被不同的实际参数代替,每次调用时在宏名字的后面

5、附带实际参数。完整的宏定义格式是:宏名MACRO[形式参数表]宏体ENDM形式参数可以出现在宏体中的任何位置,可以在操作数中,可以在指令助记符的位置,甚至还可以是其中的一部分。下面的几个例子用来说明参数的各种不同用法。【例7.11】普通用法,形式参数出现在操作数的位置。dchMACROxMOVAH,2MOVDL,xINT21HENDM源程序中调用宏dch时,应该在宏名字的后面跟一个实际参数,从例7.11的宏体可以看出,这个实际参数应该是用于屏幕显示的一个ASCII字符。因而,源程序中用下面的写法连续两次调用上述宏,

6、就可以实现回车换行操作。宏展开时,对每一次宏调用,将分别以相应的实际参数代换宏体中的形式参数。dch13dch10【例7.12】形式参数可以出现在助记符的位置。ccMACROcmd,labCMPAX,BXcmdlabENDM上述宏在调用时可以用不同的实际参数代换形式参数cmd,使得宏体中的第2行是不同的指令。比如下面是几个调用的例子,请读者自己写出宏展开的结果。ccJG,n1ccJBE,n2ccJNZ,n3【例7.13】宏的形式参数可以作为一个标识符的一部分。这时,必须用符号“&”把形式参数与标识符的其余部分分开。

7、例7.12中的宏定义还可以写成下面的形式:cc1MACROcmd,labCMPAX,BXJ&cmdlabENDM宏体中第2行的J&cmd就是在一个标识符中(例7.13中表现为指令助记符)含有形式参数,符号“&”用于把形参cmd从标识符中分离出来。如果没有分隔符号“&”,汇编程序将把Jcmd作为一个整体处理,而不知道其中的cmd是形参。对例7.12后面的3个调用,调用例7.13中的宏可以达到同样的效果,相应写法是:cc1G,n1cc1BE,n2cc1NZ,n3【例7.14】形式参数还可以出现在变量定义伪操作的初值表中

8、,甚至是以字符串形式出现的初值。msgMACROnum,pnamevar&numDB'HELLO,&pname'ENDM汇编语言规定,字符串中的形参必须用分隔符“&”从其它部分分离出来。对于下面两个宏调用,msg1,Johnmsg2,Henrry宏展开的结果是:+var1DB'HELLO,John'+var2DB'HELLO,Henrry'*7.3.4宏操作

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

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

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