汇编语言和实验指导第七章.ppt

 宏汇编  重复汇编  条件汇编 第七章 高级汇编语言技术 1. 宏汇编 宏:源程序中一段有独立功能的程序代码。 宏指令:用户自定义的指令。在编程时,将多次 使用的功能用一条宏指令来代替。 宏展开:汇编程序把宏调用展开 宏定义体 复制到宏指令位置,实参代虚参 LOCAL中的标号 ??0000~??ffff 宏定义: macro_name MACRO [哑元表] ; 形参/虚参 [LOCAL 标号表] …… …… ; 宏定义体 ENDM 宏调用: (必须先定义后调用) macro_name [实元表] ; 实参 例:保存寄存器 宏展开: 1 push ax 1 push bx 1 push cx 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 例:两个字相乘 宏定义: 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,xyz[bx] 例:求绝对值 宏定义: absol MACRO oper LOCAL next cmp oper,0 jge next neg oper next: ENDM 宏调用: …… absol 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: …… 宏汇编操作符: ;; % 符号1 符号2 宏展开时,合并前后两个符号形成一个符号。 ;; 注释 宏展开时,;;后面的注释不予展开。 % 表达式 汇编程序将%后面的表达式转换为数字,并在展开期间用这个数取代哑元。 例:定义宏指令STRG,实现存储字符串的功能 宏定义: STRG MACRO STRING DB ‘STRING’ ENDM 宏调用: STRG 25-1 STRG % 25 -1 宏展开: 1 DB ‘25-1’ 1 DB ‘24’ 列表伪操作: .LALL :在LST清单中列出宏展开后的全部 语句(包括注释)。 .SALL :在LST清单中不列出任何宏展开后的 语句。 .XALL :缺省的列表方式,只列出宏体中产生 目标代码的语句。 starter macro csname, dsname assume cs:csname, ds:dsname, es:dsname push ds sub ax, ax push ax mov ax, dsname mov

文档评论(0)

1亿VIP精品文档

相关文档