第7章显示程序设计.ppt

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

一组指令/伪指令,用来完成某项功能。宏指令使用之前,首先“定义”,此后就可以在程序中多次使用。可以将宏指令的定义存放在一个文件中,建立宏指令库,好像高级语言的库函数,使用时用INCLUDE伪指令将这个库插入源程序。使用子程序和宏指令都可以提高编程效率。宏指令实际上就代表了它对应的一组指令。对程序中出现的宏指令进行汇编时,这条宏指令被它对应的一组指令所代替。如果程序中多次使用宏指令,就等于多次重复拷贝了这个指令组,占用的内存随之增加。子程序占用固定大小的存储空间,被主程序调用时,空间不会随调用次数而增加。调用子程序通过执行CALL指令实现,存在从“主程序”与“子程序”之间的两次控制转移。使用宏指令不存在控制转移的过程。7.1.1 宏指令的定义形式参数表中的参数(形参、虚参、哑元)可以为“空”(没有),也可以有多个,用逗号分隔。宏体由指令、伪指令和前面已经定义的宏指令组成。7.1.1 宏指令的定义例:SHIFTMACRO MOVCL,4SALAL,CLENDM例:SHIFTCMACROCNMOVCL,CNSALAL,CLENDM CRLF MACRO MOV DL,0AHMOVAH,2 INT 21H MOV DL,0DH INT 21H ENDM SUM2 MACRO X,Y MOV AX,X ADD AX,Y ENDM SUM3 MACRO A,B,C SUM2 A,B ADD AX,C ENDMMAX MACRO X,Y,Z LOCALL1 MOV AX,X CMP AX,Y JGE L1 MOV AX,YL1: MOV Z,AX ENDM7.1.2 宏指令的使用宏调用宏指令名[实参1,实参2,…,实参n]说明:宏指令名必须先定义后调用。实际参数(简称实参,也称实元)汇编时替换宏定义中的形参。实参个数多于形参,多余实参被忽略;实参少于形参,多余形参作为“空处理”。例:SHIFTC2SUM33,4,57.1.2 宏指令的使用.MODEL SMALL.CODESTART:MOV CX,10 MOV BL,0AGAIN:MOV DL,BL MOV AH,02H INT 21H CRLF INC BL LOOP AGAIN MOV AH,4CH INT 21H END START宏展开宏展开是将宏调用语句用宏定义中的宏体的目标代码替换。汇编程序将对每条宏调用语句进行宏展开,用实参替代相应的形参,对宏体目标代码作相应改变。例:SHIFTSHIFTC2SHIFTC4INCLUDEYLIB.H.MODEL SMALL.DATA BUF DW –90,90,234 ;3个数BIG DW ? ;存放最大数的单元MESS DB 0DH,0AH,‘TheMaxIs:$’.CODESTART: MOV AX,@DATA MOV DS,AX MAX BUF,BUF+2,BIG ;求前两个数中的较大者,;存入BIG MAX BUF+4,BIG,BIG ;求第三个数与BIG中的较大者,;存入BIG LEA DX,MESS MOV AX,BIG CALL WRITEINT MOV AX,4C00H INT 21H END START在MAX宏指令定义中,出现了标号L1。该指令被二次调用。这样,在目标代码中会出现二个L1标号,也就是说,在同一个源程序中出现两个同名标号。为了避免这个错误,宏定义中使用LOCAL局部标号定义伪指令把L1定义为“局部标号”。宏展开

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档