汇编 第7章 高级汇编语言技术

上传人:子 文档编号:51648314 上传时间:2018-08-15 格式:PPT 页数:26 大小:119KB
返回 下载 相关 举报
汇编 第7章  高级汇编语言技术_第1页
第1页 / 共26页
汇编 第7章  高级汇编语言技术_第2页
第2页 / 共26页
汇编 第7章  高级汇编语言技术_第3页
第3页 / 共26页
汇编 第7章  高级汇编语言技术_第4页
第4页 / 共26页
汇编 第7章  高级汇编语言技术_第5页
第5页 / 共26页
点击查看更多>>
资源描述

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

1、 宏汇编 重复汇编 条件汇编第七章 高级汇编语言技术11. 宏汇编宏:源程序中一段有独立功能的程序代码。宏指令:用户自定义的指令。在编程时,将多次使用的功能用一条宏指令来代替。 汇编语言程序指令伪指令(伪操作)宏指令2优:模块化省内存缺:开销大宏定义: Q macro x,yendm主程序: Q a, b Q c, d Q e, f 目标程序: 优:参数传送 简单,执 行效率高缺:占用内存 空间大主程序: CALL - CALL - CALL - 子程序:RET3宏展开:汇编程序把宏调用展开宏定义体 复制到宏指令位置,实参代虚参LOCAL中的标号 ?0000?ffff宏定义: macro_na

2、me MACRO 哑元表 ; 形参/虚参LOCAL 标号表 ; 宏定义体ENDM宏调用: (必须先定义后调用) macro_name 实元表 ; 实参4例:保存寄存器宏展开:1 push ax 1 push bx 1 push cx 1 push dx 1 push si 1 push di宏定义: savereg MACROpush axpush bxpush cxpush ush sipush diENDM宏调用: savereg5例:两个字相乘宏定义: multiply MACRO opr1,opr2,resultpush ush axmov ax,opr1imul opr2mov re

3、sult,axpop axpop dxENDM宏调用:multiply cx,var,xyzbx宏展开:1 push dx 1 push ax 1 mov ax,cx 1 imul var 1 mov xyzbx,ax 1 pop ax 1 pop dx 6例:求绝对值宏定义: absol MACRO operLOCAL nextcmp oper,0jge nextneg 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

4、neg bx 1 ?0001: 7宏汇编操作符: ; %符号1 ; 注释 宏展开时,;后面的注释不予展开。% 表达式 汇编程序将%后面的表达式转换为数字,并在 展开期间用这个数取代哑元。8leap macro cond,labj重复块ENDM2. 重复汇编用于连续产生完全相同或基本相同的一组代码。不定重复伪操作 IRP/IRPCIRP 哑元, ;重复块 ENDMIRPC 哑元,字符串 ;重复块 ENDM16例:把字符A到Z的ASCII码填入数组TABLECHAR = ATABLE LABEL BYTEREPT 26DB CHARCHAR = CHAR+1ENDM1 DB 41H1 DB 42H

5、1 DB 43H1 DB 5AH汇编后:17例:产生一组指令,将字数组TAB的内容入栈保存; 宏定义PUSH_TAB MACRO KPUSH TAB+kENDM; 宏调用I=0REPT 5PUSH_TAB %II=I+2ENDM; 宏展开2 PUSH TAB+02 PUSH TAB+22 PUSH TAB+42 PUSH TAB+62 PUSH TAB+818例:建立ARRAY数组.lallARRAY LABEL WORDREPT 7DW $+2ENDMDW ARRAYARRAY LABEL WORD1 DW $+21 DW $+21 DW $+21 DW $+21 DW $+21 DW $+

6、21 DW $+2DW ARRAY汇编后:19IRP REG, PUSH REGENDM1 PUSH AX1 PUSH BX1 PUSH CX1 PUSH DX汇编后:例:生成一组入栈指令汇编后:array label byteIRPC K, 12345db NO. 为条件 ; 自变量满足条件则汇编此块ELSE ; 自变量不满足条件则汇编此块ENDIF一般格式:21IF 表达式 ;表达式0,则汇编IFE 表达式 ;表达式0,则汇编IF1 ;在第一遍扫视期间满足条件IF2 ;在第二遍扫视期间满足条件IFDEF 符号 ;符号已定义,则汇编IFNDEF 符号 ;符号未定义,则汇编IFB ;自变量为空

7、,则汇编IFNB ;自变量不为空,则汇编IFIDN , ;串1与串2相同IFDIF , ;串1与串2不同22例:求最大值放入AX宏定义:MAX MACRO K,A,B,CLOCAL NEXT,OUTMOV AX, AIF K-1IF K-2CMP C, AXJLE NEXTMOV AX, CENDIF NEXT: CMP B, AXJLE OUTMOV AX, BENDIF OUT:ENDM1 MOV AX, P 1 ?0002: CMP Q, AX 1 JLE ?0003 1 MOV AX, Q 1 ?0003:宏展开:1 MOV AX, P 1 ?0001: 1 MOV AX, P 1 C

8、MP R, AX 1 JLE ?0004 1 MOV AX, R 1 ?0004: CMP Q, AX 1 JLE ?0005 1 MOV AX, Q 1 ?0005:宏调用:MAX 1, P MAX 2, P, Q MAX 3, P, Q, R23; 宏展开1 SAL AX, 12 SAL AX, 13 SAL AX, 1例:宏定义的递归调用: POWER实现 ( X * 2N ); 宏定义 POWER MACRO X, NSAL X, 1 CNT=CNT+1IF CNT-NPOWER X, NENDIFENDM; 宏调用CNT=0POWER AX, 324mov ax, dividendm

9、ov bx, divisorsub cx, cx comp:cmp ax, bxjb outsub ax, bxinc cxjmp comp out:mov quotient, cxendmdivide macro dividend,divisor,quotientlocal comp, outcnt=0ifndef dividendcnt=1endififndef divisorcnt=1endififndef quotientcnt=1endifif cntexitmendif 例:25movif macro tagifidn , rep movsbexitmendififidn , rep movswexitmendififb rep movsbendif endm例:宏定义movif bmovif wmovif movif a宏调用:26

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

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

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