第七章 高级汇编语言技术
第七章
高级汇编语言技术
宏汇编
重复汇编 条件汇编
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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




