- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章 高级汇编语言技术 §7.1 宏汇编 §7.2 重复汇编 §7.3 条件汇编 §7.1 宏汇编 在汇编语言中,如果在源程序中多次使用到同一个程序段,则可以将这个程序段定义成一个“指令”,叫宏指令。 仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变 通过形参、实参结合实现参数传递,简捷直观、灵活多变 宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法 通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序 §7.1 宏汇编 宏:具有宏名的一段汇编语句序列 ——宏定义时书写 宏指令:这段汇编语句序列的缩写 ——宏调用时书写 宏展开:宏指令处用这段宏代替的过程 ——宏汇编时实现 宏的参数功能强大,颇具特色 配合宏,还有宏操作符和有关伪指令 一、宏定义 mainbegin MACRO ;定义名为mainbegin的宏,无参数 mov ax,@data ;宏定义体 mov ds,ax ENDM ;;宏定义结束 宏调用及其展开 start: mainbegin ;宏调用,建立DS内容 …… mainend 4ch ;宏调用,返回DOS end start 宏展开 start: mainbegin ;宏指令 1 mov ax,@data ;宏展开 1 mov ds,ax mainend 4ch ;宏指令 1 mov al,0 ;宏展开 1 mov ah,4ch 1 int 21h 宏展开 下面是一个源程序的列表文件,它展示了宏定义、宏调用和宏展开的全部过程。 在列表文件中,左边带“+”号的指令是宏汇编程序在宏展开时自动生成的指令。 宏定义本身不生成任何目标代码,宏指令语句本身也不生成目标代码,它仅表示宏调用出现的位置。 子程序调用和宏调用的区别 子程序时在程序执行期间由主程序调用的,它只占有它自身大小的一个空间 宏调用是在汇编期间展开的,每调用一次就把宏定义体展开一次,因而它占有的存储空间与调用次数有关。 宏的参数 可以无参数,例如mainbegin 可以带有一个参数,例如mainend 也可以具有多个参数; 参数可以是常数、变量、存储单元、指令(操作码)或它们的一部分,也可以是表达式; 宏定义体可以是任何合法的汇编语句,既可以是硬指令序列,又可以是伪指令序列; ;宏定义 shlext macro shloprand,shlnum push cx mov cl,shlnum shl shloprand,cl pop cx endm ;宏指令 shlext ax,6 ;宏展开 1 push cx 1 mov cl,06 1 shl ax,cl 1 pop cx 宏的参数 为了宏定义和引用的某些特殊需要,有时实参是由字符、空格等特殊符号组成的,因此汇编程序支持几个具有特定含义的运算符。 1.连接运算符 在宏定义中,如果形式参数与其它字符连接在一起,或形式参数出现在字符串之中,那么,就必须使用连接运算符()。在宏指令定义的具体使用时,连接操作符可以在形参的前面,也可在形参的后面。在宏指令展开时,对应形参的实参就与它前面或后面的符号连接在一起构成一个新的符号。 宏的参数 2. 文本操作符 文本操作符是一对尖括号,用它括起来的内容将作为一个字符串来进行形式参数的整体替换。 在宏引用时,如果实参内包含逗号、空格等间隔符,则必须使用该操作符,以保证实参的完整性。如果实参是某个具有特殊含义的字符,为了使它只表示该字符本身,也需要用该运算符括起来。 宏的参数 3 表达式操作符% 进行宏调用时,如要在实参中使用“%”,则在宏指令调用时宏汇编程序将获取“%”后常数表达式的值作为参数,而非表达式本身。 宏的参数 4.字符操作符! 字符操作符!的使用表明,“!”后的字符不是特殊字符,而是普通字符。这样对于包含在“”、“”、“!”、“%”之间的文本串,汇编程序将能以普通字符处理。如将“!”作为普通字符,则使用!!。 宏嵌套 宏指令定义中还含有宏定义或者是宏指令的定义中含有宏调用,这两种情况都称为宏嵌套。 1. 宏定义中嵌套宏定义 ABCD_1 MACRO ┇ ABCD_2 MACRO ┇ END
文档评论(0)