高级汇编语言技术(I)

高级汇编语言技术(I)

ID:42853857

大小:216.01 KB

页数:43页

时间:2019-09-24

高级汇编语言技术(I)_第1页
高级汇编语言技术(I)_第2页
高级汇编语言技术(I)_第3页
高级汇编语言技术(I)_第4页
高级汇编语言技术(I)_第5页
资源描述:

《高级汇编语言技术(I)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、4.7高级汇编语言技术4.7.1宏指令4.7.2宏指令的使用过程4.7.3宏操作符4.7.4局部符号伪指令LOCAL4.7.5宏库的使用4.7.6重复汇编4.7.7条件汇编返回4.7.1宏指令在汇编语言程序设计过程中,可以将具有一定功能,需多次重复使用,且比较短的程序段定义成一条宏指令。使用宏指令语句可以减少程序书写错误,缩短源程序长度,使源程序编写像高级语言一样清晰、简洁。特别是使用宏库后,可以提高编程效率。返回本节4.7.2宏指令的使用过程1.宏定义2.宏调用3.宏扩展1.宏定义(1)带参宏定义宏指令名MACRO形参

2、1,形参2,……宏体ENDM(2)无参宏定义宏指令MACRO宏体ENDM2.宏调用格式:宏指令名[实参1,实参2,……]例如:对上面的宏定义的三种调用形式为:┆PRINTBUF1┆PRINTBUF2┆PRINTBUF3┆3.宏扩展┆+LEADX,BUF1+MOVAH,9+INT21H┆+LEADX,BUF2+MOVAH,9+INT21H┆+LEADX,BUF3+MOVAH,9+INT21H┆例如:上面三次宏调用,其展开的形式为:返回本节4.7.3宏操作符1.文本操作符【例4.19】在程序中定义大小及初值不同的堆栈段。可用

3、如下宏定义:DSTACKMACROASTACKSEGMENTSTACKDBASTACKENDSENDM【例4.20】表达符操作%示例。DATA1MACROA,B,C,DDWA,B,CDBDDUP(0)ENDM如果宏调用为:X=10Y=20DATA1%X+2,5,%X+Y,%Y-5DATA1X+2,5,X+Y,Y-5则相应的宏扩展为:+DW12,5,30+DB15DUP(0)+DWX+2,5,X+Y+DBY-5DUP(0)返回本节4.7.4局部符号伪指令LOCAL【例4.21】局部符号伪指令LOCAL应用。SUMMACRO

4、X,YLOCALLMOVCX,XMOVBX,YMOVAX,0L:ADDAX,BXINCBXLOOPLENDM如果两次调用宏指令如下:┆SUM100,1┆SUM50,1┆则宏扩展形式为:┆MOVCX,100MOVBX,1MOVAX,0??0000:ADDAX,BXINCBXLOOP??0000┆MOVCX,50MOVBX,10MOVAX,0??0001:ADDAX,BXINCBXLOOP??0001┆返回本节4.7.5宏库的使用语句格式:INCLUDE库文件名假设已建立一名为MACRO.LIB的宏库,其内容如下:INPUT

5、MACROALEADX,AMOVAH,10;10号系统功能调用INT21HENDMPRINTMACROALEADX,AMOVAH,9;9号系统功能调用INT21HENDMRETURNMACROMOVAH,2MOVDL,0AHINT21HMOVDL,0DH;回车换行INT21HENDMOUT2MACROAMOVDL,AMOVAH,2;2号系统功能调用INT21HENDMSTACK0MACROASTACKSEGMENTSTACKDBASTACKENDSENDM现要从键盘输入一串字符到系统缓冲区,然后将字符按相反顺序打印,采用

6、调用宏库的办法,其程序如下:INCLUDEMACRO.LIBSTACK0〈200DUP(0)〉;定义堆栈段DATASEGMENTINF01DB‘INPUTSTRING:$’INF02DB‘OUTPUTSTRING:$’BUFADB81DB?DB80DUP(0)BUFBDB81DUP(0)DATAENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATAMOVDS,AXRETURN;输出回车换行PRINTINFO1;输出字符变量INFO1代表的字符串INPUT

7、BUFA;键盘输入字符中到缓冲区;LEASI,BUFA+1MOVCH,0MOVCL,[SI]ADDSI,CXLEADI,BUFBNEXT:MOVAL,[SI]MOV[DI],ALDECSIINCDILOOPNEXTMOVBYTEPTR[DI],‘$’RETURN;输出回车换行PRINTINF02;输出的字符串变量INF02代表PRINTBUFB;反向输出输入字符串MOVAH,4CHINT21HCODEENDSENDSTART返回本节4.7.6重复汇编1.给定次数的重复汇编伪指令语句格式:REPT表达式重复块ENDM功能:

8、宏汇编程序将重复块连续地汇编表达式给定的次数。2.不定次数的重复汇编伪指令,有IRP和IRPC两种伪指令。【例4.22】某一源程序需要多次将AX,BX,CX,DX寄存器的内容压入堆栈,则可定义如下宏指令。PUSHRMACROIRPREG,〈AX,BX,CX,DX〉PUSHREGENDMENDM调用上述宏定义后,将展开

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。