汇编7章

上传人:xh****66 文档编号:61660106 上传时间:2018-12-08 格式:PPT 页数:32 大小:208.50KB
返回 下载 相关 举报
汇编7章_第1页
第1页 / 共32页
汇编7章_第2页
第2页 / 共32页
汇编7章_第3页
第3页 / 共32页
汇编7章_第4页
第4页 / 共32页
汇编7章_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《汇编7章》由会员分享,可在线阅读,更多相关《汇编7章(32页珍藏版)》请在金锄头文库上搜索。

1、1, 宏汇编 重复汇编 条件汇编,第7章 高级汇编语言技术,2,7.1 宏汇编,引言 宏:源程序中一段有独立功能的程序代码。 宏指令:用户自定义的指令。在编程时,将多次 使用的功能用一条宏指令来代替。,3,一、宏定义: macro_name MACRO 哑元表 ; 形参/虚参 ; 宏定义体 ENDM,二、宏调用: (必须先定义后调用) macro_name 实元表 ; 实参 注:实元与哑元之间的三种关系: 实元=哑元; 实元哑元; 实元哑元,4,三、宏与子程序之间的区别,5,四、宏定义中的参数 1. 无参数 例:保存寄存器,宏展开: 1 push ax 1 push bx 1 push cx

2、1 push dx 1 push si 1 push di,宏定义: savereg MACRO push ax push bx push cx push dx push si push di ENDM 宏调用: savereg,6,2. 一般带参数 例:两个字相乘 宏定义: multiply MACRO opr1,opr2,result push dx push ax mov ax,opr1 imul opr2 mov result,ax pop ax pop dx ENDM 宏调用: multiply cx,var,xyzbx,7,3. 操作码可以作为参数传递,8,4.操作码一部分作为参数

3、,需用&操作作为分隔符 格式: 符号1 & 符号2 宏展开时,合并前后两个符号形成一个符号。,9,五、宏定义规则 1.宏汇编操作符: & 符号1 & 符号2 宏展开时,合并前后两个符号形成一个符号。,10,例:,11,2. 宏汇编操作符: % % 表达式 汇编程序将%后面的表达式转换为数字,并在展开期间用这个数取代哑元。 例:定义宏指令STRG,实现存储字符串的功能 宏定义: STRG MACRO STRING DB &STRING& ENDM 宏调用: STRG 251 STRG % 25 1 宏展开: 1 DB 251 1 DB 24,12,例:,13,有下列程序段: XOR AL, AL

4、 CALL SUBROUT MOV BL, AL CALL SUBROUT RCR AL, 1 HLT SUBROUT PROC NEAR NOT AL JS NEXT STC NEXT:RET SUBROUT ENDP 程序运行后,AL=? BL=?,14,3.宏定义中允许使用标号 macro_name MACRO 哑元表 LOCAL 标号表 ; 宏定义体 ENDM LOCAL中的标号 ?0000?ffff,15,例:求绝对值 宏定义: absol MACRO oper LOCAL next cmp oper,0 jge next neg oper next: ENDM 宏调用: absol

5、 var absol bx ,宏展开: 1 cmp var,0 1 jge ?0000 1 neg var 1 ?0000: 1 cmp bx,0 1 jge ?0001 1 neg bx 1 ?0001: ,16,4.宏定义中允许使用宏调用 例:,17,5. 宏定义允许嵌套 例:,18,6. 列表伪操作: .LALL :在LST清单中列出宏展开后的全部 语句(包括注释)。 .SALL :在LST清单中不列出任何宏展开后的 语句。 .XALL :缺省的列表方式,只列出宏体中产生 目标代码的语句。,19,starter macro csname, dsname assume cs:csname,

6、 ds:dsname, es:dsname push ds sub ax, ax push ax mov ax, dsname mov ds, ax mov es, ax endm,宏调用: . xall starter code, data,例:,20,7. 宏库 建立宏库:,EDIT EXP.ASM,EDIT MACRO . MAC,调用宏库:,21,一、重复伪操作 REPT 格式: REPT 表达式 ;重复块 ENDM,7.2 重复汇编,用于连续产生完全相同或基本相同的一组代码。,22,例:把字符A到Z的ASCII码填入数组TABLE,23,例:产生一组指令,将字数组TAB的内容入栈保存

7、,24,二、不定重复伪操作 IRP/IRPC 格式: 1. IRP 哑元, ;重复块 ENDM 2. IRPC 哑元,字符串 ;重复块 ENDM,25,IRP REG, PUSH REG ENDM,1 PUSH AX 1 PUSH BX 1 PUSH CX 1 PUSH DX,汇编后:,例:生成一组入栈指令,汇编后:,例:生成存储字符串的汇编语句,26,7.3 条件汇编,根据条件把一段源程序包括在汇编语言程序内或者排除在外。,IF 自变量 ; 为条件 ; 自变量满足条件则汇编此块 ELSE ; 自变量不满足条件则汇编此块 ENDIF,一般格式:,27,IF 表达式 ;表达式0,则汇编 IFE

8、表达式 ;表达式0,则汇编 IF1 ;在第一遍扫视期间满足条件 IF2 ;在第二遍扫视期间满足条件 IFDEF 符号 ;符号已定义,则汇编 IFNDEF 符号 ;符号未定义,则汇编 IFB ;自变量为空,则汇编 IFNB ;自变量不为空,则汇编 IFIDN , ;串1与串2相同 IFDIF , ;串1与串2不同,28,29,例:宏定义的递归调用: POWER实现 ( X * 2N ),; 宏定义 POWER MACRO X, N SAL X, 1 CNT=CNT+1 IF CNT-N POWER X, N ENDIF ENDM ; 宏调用 CNT=0 POWER AX, 3,30,31,32,本章小结,重点掌握宏汇编,条件汇编和重复汇编,及其应用编程,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号