教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

第七章 高级汇编语言技术

来源:网络收集 时间:2026-09-07
导读: 第七章 高级汇编语言技术 宏汇编 重复汇编 条件汇编 1. 宏汇编宏:源程序中一段有独立功能的程序代码。宏指令:用户自定义的指令。在编程时,将多次 使用的功能用一条宏指令来代替。 指令汇编语言程序 伪指令(伪操作) 宏指令 宏定义:macro_name MACRO [哑元

第七章

高级汇编语言技术

宏汇编

重复汇编 条件汇编

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

指令汇编语言程序 伪指令(伪操作) 宏指令

宏定义:macro_name MACRO [哑元表] ; 形参/虚参[LOCAL 标号表] …… …… ; 宏定义体

ENDM

宏调用: (必须先定义后调用)macro_name [实元表]; 实参

宏展开:汇编程序把宏调用展开3

例:保存寄存器宏定义: savereg

MACRO push push push push push push ENDM

ax bx cx dx si di

宏展开: 1 1 1 1 1 1 push push push push push push ax bx cx dx si di

宏调用: savereg

例:两个字相乘宏定义:multiply MACRO push push mov imul mov pop pop ENDM opr1,opr2,result dx ax ax,opr1 opr2 result,ax ax 宏展开: dx 1 1 1 1 1 1 1 push push mov imul mov pop pop dx ax ax,cx var xyz[bx],ax ax dx5

宏调用:multiply cx,var,xyz[bx]

例:求绝对值宏定义:absol MACRO oper LOCAL next cmp oper,0 jge next neg oper ENDM

宏展开:1 1 1 1 …… cmp jge neg ??0000: …… …… cmp jge neg ??0001: …… var,0 ??0000 var

next: 1 1 1 1 bx,0 ??0001 bx

宏调用:…… absol …… absol …… var

bx6

宏汇编操作符: &符号1 & 符号2

;;

%

宏展开时,合并前后两个符号形成一个符号。

;; 注释宏展开时,;;后面的注释不予展开。

% 表达式 汇编程序将%后面的表达式转换为数字,并在 展开期间用这个数取代哑元。7

宏定义:leap macro cond,lab

j&condendm

lab

宏调用:leap z, there

宏展开:1 jz there

……leap nz, here 1

……jnz here

宏定义: msg

macro

lab,num,xyz

lab&num db ‘HELLO MR.&xyz’ endm

宏调用:

msg …… msg

ary,1,wang

ary,2,zhang

宏展开:1 ary1 db ‘HELLO MR.wang’ …… 1 ary2 db ‘HELLO MR.zhang’9

宏定义: msgerrmsg

macro count,string msg&count db string endm macro text cntr = cntr+1 msg %cntr,text endm

cntr=0 宏调用: …… errmsg …… errmsg

‘SYNTAX ERROR’ ‘INVALID OPERAND’

1 1 宏展开: 21 1 2

cntr msg msg1 …… cntr msg msg2

= cntr+1 %cntr,‘SYNTAX ERROR’ db ‘SYNTAX ERROR’= cntr+1 %cntr,‘INVALID OPERAND’ db ‘INVALID OPERAND’10

列表伪操作:.LALL :在LST清单中列出宏展开后的全部 语句(包括注释)。

.SALL :在LST清单中不列出任何宏展开后的 语句。 .XALL :省略的列表方式,只列出产生目标 代码的语句。

宏库的建立与调用:; MACRO.MACmacro1 MACRO [哑元表] …… ENDM MACRO [哑元表] …… ENDM MACRO [哑元表] …… ENDM

macro2

……macroN

; EXP.ASM

include 路径\MACRO.MAC …… macro1 [实元表] …… macro2 [实元表] purge macroN …… macroN [实元表] ……12

宏调用与子程序调用的区别:

子程序:在程序执行期间被

调用,只占用自身大小的一段空间。

宏调用:在汇编期间被展开,每调用一次就把宏定义体展开一次。

主程序

子程序 sub1

……call …… call …… sub1 sub1

………… ……

ret

call……

sub1

宏展开:

……宏调用: 宏定义:

…… Q macro x,y Q …… endm Q c,d a,b

……

……

……Q …… e,f

……

子程序:优点:模块化,节省内存,可被多次调用,编程 效率高。 缺点:额外开销(保存返回地址,计算转向地址, 传递参数等)大,增加了执行时间。适于 子功能代码较长、调用比较频繁的情况。

宏调用:优点:参数传送简单,执行效率高。缺点:不节省空间,适于子功能代码较短、传参 较多的情况。16

…… 此处隐藏:198字,全部文档内容请下载后查看。喜欢就下载吧 ……
第七章 高级汇编语言技术.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/977650.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)