(汇编语言教程)6_高级汇编技术.ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主要内容——高级汇编技术 宏汇编 重复汇编 条件汇编 结构与记录 一、宏汇编 一、宏汇编 宏定义与宏调用 宏汇编实例分析 宏与子程序 1、宏定义与宏调用 什么是宏? 宏(或宏指令)是源程序中一段有独立功能的程序代码,只需定义一次,可以多次调用。 为什么使用宏汇编? 在编制汇编语言程序过程中,有些功能程序段需要多次重复使用,所不同的只是参与操作的操作数。 为了减少编程的工作量,通常采用两种方法: ①将程序段编写为独立的子程序 ②将程序段定义成宏 大家想一下 子程序有什么优缺点? 宏指令语句 功能: 代替程序中需要多次重复的指令序列。 宏定义格式: 宏名 MACRO [形式参数表] … (宏体) ENDM 宏调用格式 宏名 [实在参数表] 宏展开 宏定义的取消 一个宏定义名必须用伪指令PURGE取消后,才能重新定义。PURGE伪指令的格式为: PURGE 宏名 [,┅ ] 一条PURGE伪指令可以取消多个宏。 退出宏伪指令EXITM表示结束当前宏调用的展开。其格式为: EXITM 2、宏汇编实例分析——宏定义中的参数 宏定义和宏调用可以不使用形参和实参,这是相对简单的一种方式。 大多数宏定义都使用形参,这样使得宏定义的适用性及灵活性更好。 形参可以作为宏体中指令的助记符、操作数及标号等,宏调用用实参取代形参时必须保证所产生的指令是有效的。 实参可以是常数、寄存器、存储变量名以及用寻址方式能找到的地址或表达式,实参还可以是指令的操作码或操作码的一部分等。 宏汇编的这一特性是子程序所不及的。 (1)宏定义可以无参数 SAVEREG MACRO PUSH AX PUSH BX PUSH CX PUSH SI ENDM 宏调用 … SAVEREG … (1)宏定义可以无参数 例子:定义从键盘输入字符的宏指令 INPUTKEY MACRO MOV AH,1 INT 21H ENDM 宏调用: INPUTKEY (1)宏定义可以无参数 例子:完成对AX寄存器内容乘以10的功能,设乘积仍在16位范围。 AX10 MARCO PUSH DX SAL AX,1 MOV DX,AX SAL AX,1 SAL AX,1 ADD AX,DX POP DX ENDM (2)宏定义具有多个参数 例子:控制寄存器移位的宏定义。 SHIFT MACRO X,Y MOV CL,X SAL Y,CL ENDM 若: SHIFT 3,AL SHIFT 5,BL 宏展开? (2)宏定义具有多个参数 例子:用宏指令定义两个字操作数相加,得到一个16位的和。 宏定义: ADD12 MACRO A1,A2,A3 PUSH DX PUSH AX MOV AX,A1 ADD AX,A2 MOV A3,AX POP AX POP DX ENDM (3)参数可以是操作码 宏定义 A MACRO P1, P2,P3 MOV AX,P1 P2 P3 ENDM 调用: A WORD_ VAR ,INC,AX 展开: MOV AX,WORD_VAR INC AX (4)参数可以是操作码或操作数的一部分 参数可以是操作码或操作数的一部分,但在宏定义体中必须使用分隔符。 即是操作符,在宏定义中可作为形参的前缀,展开时把前后的两个符号连接起来,形成操作码、操作数或字符串。 只能出现在宏定义中。 分隔符 SHIFT MARCO X,Y,Z MOV CL,X SZ Y,CL ENDM 上例被调用时: SHIFT 4,AL,AL SHIFT 6,BX,AR 则宏展开时的目标代码: (4)参数可以是操作码或操作数的一部分 例子:将组合BCD码转换为ASCII码 宏定义: SHIFT MACRO N,REG,C MOV CL,N SC REG,CL ENDM DISP MACRO MOV AH,02H INT 21H ENDM 定义一个宏,调用它可以实现输入一串字符或显示一串提示字符的功能。 ENTER MACRO MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH INT 21H ENDM INOUT MACRO X,Y MOV AH,X LEA DX,Y INT 21H ENDM 子程序 子程序的定义是由过程定义伪指令PROC和ENDP来完成的。其格式如下: 过程名 PROC [NEAR/FAR] ┆ 过程名 ENDP 其中PROC表示过程定义开始,ENDP表示

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档