汇编7章.pptVIP

  • 1
  • 0
  • 约5.42千字
  • 约 32页
  • 2018-12-09 发布于河南
  • 举报
汇编7章

* * ? 宏汇编 ? 重复汇编 ? 条件汇编 第7章 高级汇编语言技术 7.1 宏汇编 引言 宏:源程序中一段有独立功能的程序代码。 宏指令:用户自定义的指令。在编程时,将多次 使用的功能用一条宏指令来代替。 汇编语言程序 指令 伪指令(伪操作) 宏指令 一、宏定义: macro_name MACRO [哑元表] ; 形参/虚参 …… …… ; 宏定义体 ENDM 二、宏调用: (必须先定义后调用) macro_name [实元表] ; 实参 注:实元与哑元之间的三种关系: 实元=哑元; 实元哑元; 实元哑元 优:模块化 省内存 缺:开销大 宏定义: Q macro x,y … endm 主程序: … Q a, b … Q c, d … Q e, f … 目标程序: … … … … … … 优: 参数传送简单,执行效率高 缺: 占用内存空间大 主程序: … CALL ---- … CALL ---- … CALL ---- … 子程序: … … … RET 三、宏与子程序之间的区别 四、宏定义中的参数 1. 无参数 例:保存寄存器 宏展开: 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 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,xyz[bx] 宏展开: 1 push dx 1 push ax 1 mov ax,cx 1 imul var 1 mov xyz[bx],ax 1 pop ax 1 pop dx 3. 操作码可以作为参数传递 abc macro p1,p2,p3 mov ax,p1 p2 ax,p3 endm 宏定义: 宏调用: abc var, add, cx Abc dx, shl, cl 宏展开: 1 mov ax,var 1 add ax,cx 1 mov ax,dx 1 shl ax,cl leap macro cond,lab jcond lab endm 宏定义: 宏调用: leap z, there …… leap nz, here 宏展开: 1 jz there …… 1 jnz here 4.操作码一部分作为参数,需用操作作为分隔符 格式: 符号1 符号2 宏展开时,合并前后两个符号形成一个符号。 五、宏定义规则 1.宏汇编操作符: 符号1 符号2 宏展开时,合并前后两个符号形成一个符号。 宏定义: msg macro lab,num,xyz labnum db ‘HELLO MR.xyz’ endm 宏调用: msg ary,1,wang …… msg ary,2,zhang 宏展开: 1 ary1 db ‘HELLO MR.wang’ …… 1 ary2 db ‘HELLO MR.zhang’ 例: 2. 宏汇编操作符: % % 表达式 汇编程序将%后面的表达式转换为数字,并在展开期间用这个数取代哑元。 例:定义宏指令STRG,实现存储字符串的功能 宏定义: STRG MAC

文档评论(0)

1亿VIP精品文档

相关文档