- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5.4 宏指令语句 1.宏指令、宏定义和宏调用 宏指令是源程序中具有独立功能的一段程序代码。在汇编语言中,如果在源程序中需要多次使用同一个程序段,可以将这个程序段定义(宏定义)为一个宏指令,然后每次需要是,即可简单地用宏指令名来代替(称为宏调用),从而避免了重复书写,使源程序更加简洁、易读。 宏定义由MASM宏汇编程序提供的伪指令实现,其格式为 宏指令名 MACRO [形式参数] ENDM 宏调用的格式为 宏指令名 [实际参数] 这就是说,只要在源程序中写上已定义过的宏指令名就算是调用该宏指令了。 具有宏调用的源程序被汇编时,每个宏调用将被MASM进行宏展开。宏展开实际上是用宏定义式设计的宏体去代替相应的宏指令,并用实际参数一一取代形参。 由此可见,使用宏的过程共有三步:首先进行宏定义;然后可以进行宏调用;最后,汇编时由MASM进行宏展开。 [例] 若源程序中多处需要将AL和CL寄存器中的两位压缩型的BCD数相加,并将和送回BL寄存器,则可象下述这样定义宏指令,然后在需要的地方进行调用。 DECADD MACRO ADD AL,CL DAA ENDM 显而易见,这是一个无形式参数的宏定义。 如果对分别存放在任意8位寄存器或存储单元中的两个压缩型的BCD数进行加法运算,则可将上例宏定义改写为 DECADD1 MACRO OPR1,OPR2 MOV AL,OPR1 ADD AL,OPR2 DAA MOV OPR1,AL ENDM 这是一个带有两个形式参数的宏定义。宏指令为DECADD1。例如有以下宏调用: DECADD1 DL, BUFFER DECADD1 AREA1, AREA2 则汇编时进行宏展开,得到以下指令: DECADD1 DL, BUFFER + MOV AL, DL + ADD AL, BUFFER + DAA + MOV DL, AL DECADD1 AREA1, AREA2 + MOV AL, AREA1 + ADD AL, AREA2 + DAA + MOV AREA1, AL 宏扩展后,原来宏体中的指令前面都加上了符号“+”,以示区别。 宏指令与子程序的区别 在汇编语言程序设计中,宏指令和子程序都给设计者提供了很大方便。他们都是可被程序多次调用的程序段,并且调用前必须由设计者事先根据需要按一定格式进行定义。然而,宏指令和子程序由于定义方法和几个是不同,使用中会有许多不同之处,主要是空间和时间的差异。 ⑴ 子程序由CALL指令调用,由RET指令返回,所以汇编后子程序的机器码只占有一个程序段,不管调用多少次均如此,较为节约内存。宏指令在每次宏调用处宏展开时,宏体都要占一个程序段,调用次数愈多,占用内存愈多。因此从内存空间开销来说,子程序优于宏指令。 ⑵ 从程序的执行时间来分析,每调用一次子程序都要保护和恢复返回地址(断点)及寄存器内容(现场)等,要消耗较多的时间。宏指令调用时不需要这个过程,执行时间较短。因此,从执行时间来分析,宏指令又优于子程序。 综上所述,当某一需多次访问的程序段较长,访问次数又不是太多时,选用子程序结构较好。当某一需多次访问的程序段较短,访问次数又很频繁时,选用宏指令结构显然要更好些。 5.5 汇编语言程序上机过程 要想在计算机上 运行汇编语言程序,必须首先对源程序进行汇编和连接。下图表示了对汇编语言源程序的编辑、汇编和连接的过程。 5.5.1 用编辑程序建立汇编语言源程序文件 建立一个汇编语言源程序,可以使用Windows系统下的记事本程序来编写,也可以使用DOS操作系统下的EDIT程序来编写。 例如从键盘输入二个数存入内存以DATA开始的二个单元中,然后选出其中的大数输出。 设编辑后的汇编语言源程序名为:exp1.asm 5.5.2 用汇编程序将.ASM文件汇编成目标程序文件.OBJ 在对汇编语言源程序文件(简称ASM文件)汇编时,汇编程序将对ASM文件进行二遍扫描。若程序文件中有语法错误,则在结束汇编后将指出源程序中的错误语句及错误类型。否则将在汇编后生成目标程序文件(即OBJ文件) 完成汇编功能的是小汇编程序ASM或宏汇编程序MASM。 汇编过程如下表所示: MASM宏汇编的提示信息及回答 5.2.3 用连接程序生成可执行程序文件(EXE 文件) 经汇编后产生的目标程序文件(OBJ文件)并不是可执行程序文件,必须经连接后才能成为可执行文件(EXE文件)。连接程序并不是专门为汇编语言程序设计的,如果一个程序是由若干个模块组成的,也可以通过连接程序把它们连接在一起。这些模块可以是汇编程序产
文档评论(0)