- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第10章 宏汇编和重复汇编
第10章 高级汇编语言技术 ;10.1 宏汇编;10.1.1宏定义
宏是源程序中一段有独立功能的程序代码。它只需要在源程序中定义一次,就可以多次定义它,调用时只需用一个宏指令语句就可以了。
若想在汇编语言中使用宏指令,就要定义一个宏。宏定义是用一组伪操作来实现的。宏定义格式为:
宏指令名 MACRO 形参1,形参2,…
┇ 宏体
ENDM;宏指令名:宏定义的名字,不可缺省,宏调用时需要用它,第一个符号必须是字母,其后可以是字母或数字。
MACRO…ENDM:宏定义伪指令助记符,不可缺省。它们成对出现,表示宏定义的开始和结束,ENDM前不带宏指令名。
宏体:一段有独立功能的程序代码段。
形式参数:又称哑元、虚参,是可选项,带参数时候,各个形参之间用逗号隔开。 ;10.1.2 宏调用和宏展开
1、宏调用
在汇编语言中使用已定义过的宏指令,称为宏调用。宏调用格式为:
宏指令名 实参1,实参2,…
宏调用只需要有宏指令名,如果宏定义中有形参,则宏调用时须带有实参来代替形参,实参的个数,顺序,类型要与形参一一对应,各个实参之间用逗号分开。原则上实参的个数与形参的个数相等,但汇编程序不要求它们必须相等,如果实参个数大于形参个数,那么多余的实参不予考虑,若实参个数小于形参,则多余的形参作“空”处理。 ;2、宏展开
汇编程序在对源程序汇编时,对每个宏调用作宏展开,即用宏定义中的宏体取代宏指令名,并用实参一一对应代替形参。;10.1.3 宏调用中的参数使用
为了宏定义和引用的某些特殊需要,有的实参是由字符、空格等特殊符号组成的,因此汇编程序支持几个具有特定含义的操作符。
1、连接操作符
在宏定义中,如果形式参数与其它字符连接在一起,或形式参数出现在字符串之中,使用连接操作符。在宏指令定义的具体使用时,连接操作符可以在形参的前面,也可在形参的后面。在宏指令展开时,对应形参的实参就与它前面或后面的符号连接在一起构成一个新的符号。 ; 2、文本操作符
文本操作符是一对尖括号,用它括起来的内容将作为一个字符串来进行形式参数的整体替换。在宏引用时,如果实参内包含逗号、空格等间隔符,则需要使用该操作符,以保证实参的完整性。如果实参是某个具有特殊含义的字符,为了使它只表示该字符本身,也需要用该操作符括起来。;3、表达式操作符%
进行宏调用时,如要在实参中使用“%”,则在宏指令调用时汇编程序将获取“%”后常数表达式的值作为参数,而非表达式本身。;4、字符操作符!
字符操作符!的作用说明,“!”后的字符不是特殊字符,而是普通字符。对于包含在“”、“”、“!”、“%”之间的文本串,汇编程序将以普通字符处理。如将“!”作为普通字符,则使用!!。 ;10.1.4 宏嵌套
宏指令定义中含有宏定义或者是宏指令定义中含有宏调用,这两种情况都称为宏嵌套。
宏定义中嵌套宏定义形式如下:
ABCD_1 MACRO
┇
ABCD_2 MACRO
┇
ENDM
┇
ENDM
ENDM;10.1.5 宏汇编中的伪指令
1、MACRO和ENDM
在前面的宏指令的定义中已经介绍过,这是宏操作时必不可少的指令,而且成对出现。 ;2、PURGE
PURGE的功能是取消多个宏定义,即一个宏指令定义可以用伪指令PURGE来取消,然后可以再重新定义。经过定义的宏指令名,不允许重新定义,必须用PURGE语句将其取消后,才能重新定义,此语句可以取消多个宏指令名。
格式: PURGE 宏指令名1,宏指令名2,…
取消宏定义的含义是使该宏定义成为空,程序中如果出现一个已被取消宏定义的宏调 用,则汇编程序将不会指示出错,但它将忽略该宏调用,当然也不会予以展开。 ;3、LOCAL
某些宏定义中存在变量或标号,这些宏定义在同一程序中被多次调用且展开后,就会出现变量或标号重复定义的错误。LOCAL伪指令的使用可以避免此类错误。在宏展开时,让宏汇编程序自动为其后的形参顺序生成特殊符号(范围为??0000—??FFFFH),并用这些特殊符号来取代宏体中的变量或标号,避免了符号重复定义的错误。
必须注意,LOCAL伪操作只能用在宏体内,而且它必须是MACRO伪操作后的第一句,在MAC
文档评论(0)