微机原理之宏汇编技术

合集下载

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

汇编语言第7章-高级汇编语言技术
REPT 7 DW $+2 ENDM DW ARRAY
经汇编后得: 1 DW $+2 1 DW $+2
1 DW $+2 DW ARRAY
2、不定重复伪操作: (1)IRP 格式: IRP 哑元,<自变量表>
…… ;重复块
ENDM 说明:汇编程序把重复块的代码重复几次,每次重复把重 复块中的哑元用自变量表中的一项来取代,下一次取代下 一项,重复次数由自变量表中的自变量个数确定。自变量 表必须用尖括号括起来,它可以是常数、符号和字符串。
则宏展开后为:
则宏展开后为: 1 CMP VAR,0 1 JGE ??0000 1 NEG VAR 1 ??0000: 1 CMP BX,0 1 JGE ??0001 1 NEG BX 1 ??0001: 如果宏定义体内的标号数多于一个,则可以把他们列在LOCAL伪操 作之后,如 LOCAL NEXT,OUT,EXIT 宏展开时用??0000取代NEXT,??0001取代OUT, ??0002 取代EXIT。第二次调用用??0003取代NEXT,??0004取 代OUT, ??0005取代EXIT。
宏展开后,即用实元取代哑元后,所得到的语句应该是有效的,即汇编语法应是 正确的,否则汇编程序将会指示出错。
5. 宏与子程序的区别
主程序: … CALL ---… CALL ---… CALL ---…
宏定义: Q macro x,y
… endm
主程序: … Q a, b … Q c, d … Q e, f …
POP AX
POP DX
ENDM
宏调用:
DIFSQR 宏展开: 1 1 2 2 1 1 1 1
VAR1,VAR2,VAR3

汇编语言——宏

汇编语言——宏

【例7.14】形式参数还可以出现在变量定义伪操作的初值表 中,甚至是以字符串形式出现的初值。 msg MACRO num,pname 'HELLO, &pname'
var&num DB ENDM
汇编语言规定,字符串中的形参必须用分隔符“&”从其它 部分分离出来。对于下面两个宏调用, msg msg 1,John 2,Henrry
code
ENDS END main
【解】宏展开后的结果是: + + + + + + MOV MOV INT MOV MOV INT MOV INT AH,2 DL, '*' 21H AH,2 DL, '*' 21H AH,4CH 21H
由于宏展开是汇编程序翻译的一个步骤,宏展后的结果 并不是源程序,所以展开后不再写出完整的程序格式,只列 出有效指令部分。 可以看到,汇编程序对宏调用与已定义的常量及符号的 引用的处理是很类似的,定义部分在汇编处理结束后就已完 成它的作用。汇编程序翻译后得到的机器代码中没有宏、常 量等的定义,只是调用或引用部分被代换成宏体或定义的内 容。宏与常量定义及符号定义的差别在于,常量及符号定义 都必须在一行写完,对常量和符号的引用只能代换指令中的 操作数,或者操作数的一部分,宏调用则可以代换一段程序。 不仅如此,宏还允许代换的内容有个别地方不同,这是通过 带参数的宏实现的。
(3)宏定义仅仅用来告诉汇编程序,将来宏调用时复制 的对象是什么,宏定义中的程序段并不是程序的一部分,也 就是说,如果程序中定义了一个宏而没有调用它,汇编程序 将忽略宏定义。 (4)宏定义可以写在程序的任何地方,但习惯上总是把 宏定义写在程序的最前面。 宏定义与编辑器中的文字块的定义有相似之处,也有一 些差别。两者都需要以特定的方式说明开始和结束的位置。 文字块是文件的一部分,而宏体中的程序段必须经过宏调用 才能复制到源程序中正确的位置,没有被调用的宏体在汇编 程序翻译时会被忽略。

宏汇编第1章

宏汇编第1章

00000
SS
SP
进栈指令PUSH 进栈指令PUSH 格式: 格式:PUSH OPS 功能: 将寄存器、 功能 : 将寄存器 、 段寄存器或存储器中的一个字 数据压入堆栈中。 数据压入堆栈中。 例1 PUSH AX 设执行前:AX=04 04F SP=1000 1000H 设执行前:AX=04F8H,SP=1000H SS 执行: SP- →SP, 执行:①SP-1→SP,AH→[SP] XX XX SP- →SP, ②SP-1→SP,AL→[SP] XX XX 写成为一步为: 写成为一步为: XX XX SP- →SP, SP-2→SP,AX→[SP] F8 XX AX 04F8 执行后,SP=0 执行后,SP=0FFEH 04 XX SP 1000 0FFE SS:[SP]=04 04F SS:[SP]=04F8H
8086微处理器简介 1.2 Intel 8086微处理器简介
计算机系统:硬件、软件。 计算机系统:硬件、软件。 计算机系统的硬件结构: 计算机系统的硬件结构: 经典结构——冯.诺曼结构。 经典结构 冯 诺曼结构。 经典结构的要点 要点: 经典结构的要点: 由运算器、控制器、存储器、I/O设备五大部分 ①由运算器、控制器、存储器、I/O设备五大部分 组成。 组成。 ②数据和程序以二进制代码形式不加区别地存放 在存储器中( 在存储器中(数据和程序的存储空间相互分开的 叫哈佛结构)。 叫哈佛结构)。 ③控制器是根据存放在存储器中的指令序列即程 序来工作的。 序来工作的。
8086微处理器简介 1.2 Intel 8086微处理器简介
AH AL BH BL CH CL DH DL SP BP SI DI
两个独立的单元 EU BIU 负责分 负责所 析和执 有的外 行指令 部总线 操作

第03章 汇编语言程序设计5_宏汇编

第03章 汇编语言程序设计5_宏汇编


子程序
宏与子程序具有各自的特点, 宏与子程序具有各自的特点,程序员应该根据具 体问题选择使用那种方法 通常,当程序段较短或要求较快执行时, 通常,当程序段较短或要求较快执行时,应选用 当程序段较长或为减小目标代码时, 宏;当程序段较长或为减小目标代码时,要选用子 程序
宏的实例2 宏的实例2
dispmsg
macro message mov ah,9 lea dx,message int 21h endm … dispmsg string … mov ah,9 lea dx,string int 21h
;;宏定义 宏定义 ;;宏定义体 宏定义体
;宏调用(宏指令) 宏调用(宏指令) 宏调用 ;宏展开 宏展开
宏与子程序的比较 比较

仅是源程序级的简化 : 仅是源程序级的 简化: 宏 简化 在汇编时进行程序语 调用在汇编时 调用 在汇编时 进行程序语 句的展开, 不需要返回; 句的展开 , 不需要返回 ; 不减小目标程序, 不减小目标程序 , 执行速 度没有改变 通过形参、 通过形参 、 实参结合实现 参数传递, 简捷直观、 参数传递 , 简捷直观 、 灵 活多变
子程序
还是目标程序级的简化 : 还是目标程序级的 简化: 简化 子程序调用在执行时由 CALL指令转向 RET指令返 指令转向、 CALL指令转向、RET指令返 形成的目标代码较短, 回 ; 形成的目标代码较短 , 执行速度减慢 需要利用寄存器、 需要子程序的比较结论 比较 结论
1. 宏定义
宏定义由一对宏汇编伪指令 宏定义 由一对宏汇编伪指令MACRO和 ENDM来 和 来 由一对宏汇编伪指令 完成,格式如下: 完成,格式如下: 形参表] 宏名 MACRO [形参表 形参表 …… ;宏定义体 ENDM 其中宏名是符合语法的标识符, 其中宏名是符合语法的标识符 , 同一源程序中该 名字定义唯一。宏定义体中不仅可以是硬指令序 名字定义唯一 。 宏定义体 中不仅可以是硬指令序 列,还可以是伪指令语句序列 可选的形参表给出了宏定义中用到的形式参数, 可选的形参表给出了宏定义中用到的形式参数 , 每个形式参数之间用逗号分隔

汇编语言第7章高级汇编语言技术PPT课件

汇编语言第7章高级汇编语言技术PPT课件
7.1.1 宏定义、宏调用和宏展开
1. 宏定义:
说明:
① 定义宏指令以MACRO语句开始,ENDM 语句结束,它们必须成对出现
② 宏指令名:为宏指令取的名字,必须以字 母开头,后可跟字母、数字或下划线
③ 宏定义体:能够完成一定功能的指令序列
④ 哑元:定义宏体中出现的符号(字符串),
可有可无,各哑元之间用逗号隔开
注:先有宏定义,后有宏调用 例7.9: 例7.11:
12
第七章 高级汇编语言技术
7.1.5 列表伪操作 .XALL:为默认情况,指示清单中只列
出产生目标码的宏展开
.LALL:列出包括注释在内的所有宏展

.SALL:不列出任何展开信息
注:宏定义中的注释可用“;”和“;;”表示
(在宏展开时不展开,即使在.LALL之 下的清单中也不会出现)
7.2.2 不定重复伪操作 1.IRP伪操作
格式:IRP dummy,<argument list>

(重复块)
ENDM
重复次数
功能:连续地执行重复块几次,每次重复把重复块中的哑
元用自变量表中的一项来取代,下一次取代下一项, 重复次数由自变量表中的自变量个数来确定
例7.17:
注:该操作不一定非要在宏定义体内 18
3. 宏展开:在汇编时,将宏定义体插入宏调用
处(宏指令名),用实元代替哑元
注:宏展开工作是汇编程序在汇编过程中完成
例7.1:
7
第七章 高级汇编语言技术
7.1.1 宏指令与子程序的区别
共同优点:简化源程序代码
区别:
① 执行时间:子程序调用是在程序运行过程中进行;而宏调用 是在汇编过程中完成
② 执行方式:子程序执行时,每调一次都要先保护断点、再保 护现场,返回时先恢复现场、再恢复断点,因此采用子程序 方式程序的执行要花费额外的开销,执行时间长、速度慢; 而宏指令方式不需要这些开销,因而执行时间短、速度快
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档