汇编语言——宏.ppt

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

(5)参数处理不同。宏调用是以实参代替形参,参数的形式不受制,可以是指令助记符、寄存器名、标号等;而子程序的参数传递必须有确切的存放地。 编写程序的过程中,对于程序中的重复部分,究竟是采用宏还是子程序,程序员可以权衡内存空间、执行速度、参数传递方法等各方面的因素后取舍。在大多数情况下,宏比子程序有更大的灵活性,且执行速度快,在重复部分较短时经常采用;而一个已经验证过的子程序,可以做成目标代码存放在子程序库中,在另一个程序中应用时可不经过汇编程序的翻译,直接与需要使用它的程序连接在一起,从而避免宏展开后可能出现的语法及逻辑错误。 7.3 宏 程序中使用宏分为定义和调用两个部分。宏定义用来说明哪些指令或伪指令是将在程序中重复出现的程序段;宏调用是用来告诉汇编程序,在翻译前先把宏定义中的程序段复制一遍。可见,宏定义和宏调用都是告诉汇编程序如何处理,属于伪操作。 7.3.1 宏定义 【格式】 宏名 MACRO 宏体 ENDM 【说明】 (1)“宏名”是一个标识符,一个程序中可以定义多个宏,对每一个宏必须以不同的标识符命名,且宏名不能与变量、标号、段名等标识符同名。 (2)汇编语言规定,宏定义的起始标记MACRO前面必须写宏的名字,而结束标记ENDM的前面却不允许写任何内容,写在起止标记之间的部分称为宏体,宏体部分通常是一段程序中需要重复使用的指令序列。 (3)宏定义仅仅用来告诉汇编程序,将来宏调用时复制的对象是什么,宏定义中的程序段并不是程序的一部分,也就是说,如果程序中定义了一个宏而没有调用它,汇编程序将忽略宏定义。 (4)宏定义可以写在程序的任何地方,但习惯上总是把宏定义写在程序的最前面。 宏定义与编辑器中的文字块的定义有相似之处,也有一些差别。两者都需要以特定的方式说明开始和结束的位置。文字块是文件的一部分,而宏体中的程序段必须经过宏调用才能复制到源程序中正确的位置,没有被调用的宏体在汇编程序翻译时会被忽略。 7.3.2 宏调用 定义后的宏名又称为宏指令。经宏定义后,就可以在源程序中调用宏了。宏调用的方式是在源程序中需要复制宏体的地方写宏的名字。宏名单独占一行,当源程序被汇编时,汇编程序将对宏调用进行宏体复制,并取代宏名,这种复制操作称为宏展开。为了与源程序的其它部分相区别,后面的叙述中,对由宏调用而展开后得到的指令,都在前面标以加号“+”以示区别。 【例7.10】参照汇编程序的处理方法,对下面程序中的宏进行展开。 back = 4CH dosint EQU 21H dispch MACRO MOV AH,2 MOV DL, * INT 21H ENDM 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 由于宏展开是汇编程序翻译的一个步骤,宏展后的结果并不是源程序,所以展开后不再写出完整的程序格式,只列出有效指令部分。 可以看到,汇编程序对宏调用与已定义的常量及符号的引用的处理是很类似的,定义部分在汇编处理结束后就已完成它的作用。汇编程序翻译后得到的机器代码中没有宏、常量等的定义,只是调用或引用部分被代换成宏体或定义的内容。宏与常量定义及符号定义的差别在于,常量及符号

文档评论(0)

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

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

1亿VIP精品文档

相关文档