当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

清华大学:《汇编语言程序设计》第七章 高级汇编语言技术

资源类别:文库,文档格式:PPT,文档页数:31,文件大小:324KB,团购合买
一、宏汇编 二、重复汇编 三、条件汇编
点击下载完整版文档(PPT)

第七章高级汇编语言技术 宏汇编 重复汇编 条件汇编

1 • 宏汇编 • 重复汇编 • 条件汇编 第七章 高级汇编语言技术

1.宏汇 宏:源程序中一段有独立功能的程序代码。 宏指令:用户自定义的指令。在编程时,将多次 使用的功能用一条宏指令来代替。 指令 汇编语言程序{伪指令(伪操作) 宏指令

2 1. 宏汇编 宏:源程序中一段有独立功能的程序代码。 宏指令:用户自定义的指令。在编程时,将多次 使用的功能用一条宏指令来代替。 汇编语言程序 指令 伪指令(伪操作) 宏指令

macro name MACRO[哑元表]形参/虚参 [ LOCAL标号表] 宏定义体 ENDM 宏调用:(必须先定义后调用) macro_name[实元表] 实参 宏展开:汇编程序把宏调用展开

3 宏展开:汇编程序把宏调用展开 宏定义: macro_name MACRO [哑元表] ; 形参/虚参 [LOCAL 标号表] …… …… ; 宏定义体 ENDM 宏调用: (必须先定义后调用) macro_name [实元表] ; 实参

宏定义: savereg MACRO push ax push bx push CX push d 宏展开: push Si push di 1 push ax ENDM 1 push bx 1 push CX 1 push dx 宏调用: 1 push Si savereg 1 push di

4 例:保存寄存器 宏展开: 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 oprl, opr, result push dx push ax mov ax, oprl imul opr mov result. ax 宏展开: pop ax pop d push ENDM 1 push ax 1 mov ax. Cx 1 imu var 宏调用: 1 mov xyz Lbx, ax 1 pop ax multiply Cx, var, xyz Lbx] 1 pop dx 5

5 例:两个字相乘 宏定义: 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

File Edit Search View Options He G:asn、MAc.LST multiply macro oprl, opr2, result push dx push ax mov ax, opr1 imul mov result. ax pop dx endm 0000 data segment 0000 0064 var dw 100 gg2??? xyz dw? 0004 data ends de segment 0000 man 上oc assume cs:code ds .data 0000 B8 R mov ax. data 0005 B9 0002 mov cx, 2 0008 BB 0000 ply cx, var, xyz Lbx 000B 5 push ax 900G 50 工11111 push ax mov ax, Cx G00F F7 2E 0000 R inu⊥Uar p8138987ggg2R xyz [bxI, g1758 g19B8 001C CD 4c00 4c0gh int 21h ain endp 001E code ends d start 在LST文件中看到的宏展开情况

6 在LST文件中看到的宏展开情况

宏定义 宏展开 abso MACRo oper LOCAL next cmp var, O cmp oper, 0 jge??0000 1 ned var Ige next 1??0000: neg oper next ENDM 111 cm 宏调用 jge??0001 neg bx absol var 1??0001 absol bx 7

7 例:求绝对值 宏定义: 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: ……

absol macro oper local next cmp oper, g next neg oper next. endm data segment var dw -100 data ends code segment main proc assume cs:code, ds :data mov ax. data mou absol var mov bx-1 absol bx mot 21n cboh main endp code ends end start absol var 0005 83 3E 0000 R g 000A 7D 04 Gge ??0000 000C F7 1E 0000 R 111 neg var 0010 1?70000 0010 BB FFFF mov X, absol bx g138 g16 g18 P FB 90 Jge ??g8g1 001A h02带10a1份操作的宏展开情况

8 带local伪操作的宏展开情况

符号1&符号2 宏展开时合并前后两个符号形成一个符号 注释 宏展开时,后面的注释不予展开。 %表达式 汇编程序将%后面的表达式转换为数字,并在展开期间 用这个数取代哑元

9 宏汇编操作符: & ;; % 符号1 & 符号2 宏展开时,合并前后两个符号形成一个符号。 ;; 注释 宏展开时,;;后面的注释不予展开。 % 表达式 汇编程序将%后面的表达式转换为数字,并在展开期间 用这个数取代哑元

leap macro cond, lab j&cond lab endm 宏调用: 宏展开: leap Z, there jz there leap nz, here inz here

10 leap macro cond,lab j&cond lab endm 宏定义: 宏调用: leap z, there …… leap nz, here 宏展开: 1 jz there …… 1 jnz here

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共31页,可试读12页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有