8086汇编语言宏指令语句
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Source listing[NUL.LST]: (源列表文件名)
列表文件名(缺省:无列 表文件)
Leabharlann Baidu
Cross reference[NUL.CRF]: 交叉参考文件用的文件名 (缺省:无交叉参考文件) (交叉参考文件名)
第5章 汇编语言程序设计
5.2.3 用连接程序生成可执行程序文件(EXE 文件) 经汇编后产生的目标程序文件(OBJ文件)并不 是可执行程序文件,必须经连接后才能成为可执行文件 (EXE文件)。连接程序并不是专门为汇编语言程序设 计的,如果一个程序是由若干个模块组成的,也可以通 过连接程序把它们连接在一起。这些模块可以是汇编程 序产生的目标程序文件,也可以是高级语言编译程序产 生的目标程序文件。 完成连接功能的程序是LINK程序。连接过程如下 表所示:
库文件名表(各文件之间 用+号隔开)
第5章 汇编语言程序设计
DATA SEGMENT … DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS, AX MOV ES, AX … MOV AH, 4CH INT 21H CODE ENDS END START
第5章 汇编语言程序设计
宏指令与子程序的区别 在汇编语言程序设计中,宏指令和子程序都给设 计者提供了很大方便。他们都是可被程序多次调用的程 序段,并且调用前必须由设计者事先根据需要按一定格 式进行定义。然而,宏指令和子程序由于定义方法和几 个是不同,使用中会有许多不同之处,主要是空间和时 间的差异。 ⑴ 子程序由CALL指令调用,由RET指令返回, 所以汇编后子程序的机器码只占有一个程序段,不管调 用多少次均如此,较为节约内存。宏指令在每次宏调用 处宏展开时,宏体都要占一个程序段,调用次数愈多, 占用内存愈多。因此从内存空间开销来说,子程序优于 宏指令。
第5章 汇编语言程序设计
由此可见,使用宏的过程共有三步:首先进行宏 定义;然后可以进行宏调用;最后,汇编时由MASM进 行宏展开。 [例] 若源程序中多处需要将AL和CL寄存器中的两 位压缩型的BCD数相加,并将和送回BL寄存器,则可 象下述这样定义宏指令,然后在需要的地方进行调用。
DECADD MACRO ADD AL,CL
第5章 汇编语言程序设计
MASM宏汇编的提示信息及回答 提示信息 Source filename[.ASM]: (源文件名) 回 答
欲汇编的.ASM源文件名 (缺省:命令中的文件名)
Object filename[Source.OBJ]: 可重新定位目标文件名 (缺省:源文件名.OBJ) (目标文件名)
第5章 汇编语言程序设计
DATA SEGMENT … DATA ENDS CODE SEGMENT MAIN FROC FAR ASSUME CS:CODE, DS:DATA, ES:DATA START: PUSH DS XOR AX, AX PUSH AX MOV AX, DATA MOV DS, AX MOV ES, AX … RET MAIN ENDP CODE ENDS END START
DAA
ENDM 显而易见,这是一个无形式参数的宏定义。
第5章 汇编语言程序设计
如果对分别存放在任意8位寄存器或存储单元中 的两个压缩型的BCD数进行加法运算,则可将上例宏 定义改写为 DECADD1 MACRO OPR1,OPR2 MOV AL,OPR1 ADD AL,OPR2 DAA MOV OPR1,AL ENDM 这是一个带有两个形式参数的宏定义。宏指令为 DECADD1。例如有以下宏调用:
第5章 汇编语言程序设计 DECADD1 DL, BUFFER DECADD1 AREA1, AREA2 则汇编时进行宏展开,得到以下指令: DECADD1 DL, BUFFER + MOV AL, DL + ADD AL, BUFFER + DAA + MOV DL, AL DECADD1 AREA1, AREA2 + MOV AL, AREA1 + ADD AL, AREA2 + DAA + MOV AREA1, AL 宏扩展后,原来宏体中的指令前面都加上了符号“+”, 以示区别。
obj文件文件编辑程序编辑程序编辑汇编程序汇编程序汇编连接程序连接程序连接editeditediteditmasmmasmmasmmasmlinklinklinklink汇编语言程序上机过程第5章汇编语言程序设计551用编辑程序建立汇编语言源程序文件建立一个汇编语言源程序可以使用windows系统下的记事本程序来编写也可以使用dos操作系统下的edit程序来编写
第5章 汇编语言程序设计
5.5 汇编语言程序上机过程
要想在计算机上 运行汇编语言程序,必须首先 对源程序进行汇编和连接。下图表示了对汇编语言源 程序的编辑、汇编和连接的过程。
编辑程序 编辑 汇编程序 汇编 连接程序 连接
手写程序 EDIT
.ASM文件 MASM
.OBJ文件 LINK
.EXE文件
汇编语言程序上机过程
宏定义由MASM宏汇编程序提供的伪指令实现, 其格式为
第5章 汇编语言程序设计
宏指令名
MACRO
[形式参数]
…
宏体
ENDM 宏调用的格式为 宏指令名 [实际参数] 这就是说,只要在源程序中写上已定义过的宏指 令名就算是调用该宏指令了。 具有宏调用的源程序被汇编时,每个宏调用将被 MASM进行宏展开。宏展开实际上是用宏定义式设计的 宏体去代替相应的宏指令,并用实际参数一一取代形参。
第5章 汇编语言程序设计
5.5.1 用编辑程序建立汇编语言源程序文件
建立一个汇编语言源程序,可以使用Windows系统 下的记事本程序来编写,也可以使用DOS操作系统下的 EDIT程序来编写。 例如从键盘输入二个数存入内存以DATA开始的二 个单元中,然后选出其中的大数输出。 设编辑后的汇编语言源程序名为:exp1.asm
第5章 汇编语言程序设计
⑵ 从程序的执行时间来分析,每调用一次子程序 都要保护和恢复返回地址(断点)及寄存器内容(现场) 等,要消耗较多的时间。宏指令调用时不需要这个过程, 执行时间较短。因此,从执行时间来分析,宏指令又优 于子程序。 综上所述,当某一需多次访问的程序段较长,访 问次数又不是太多时,选用子程序结构较好。当某一需 多次访问的程序段较短,访问次数又很频繁时,选用宏 指令结构显然要更好些。
第5章 汇编语言程序设计
LINK程序的提示信息及回答
提示信息 回 答
Oject Modules[.OBJ] (目标模块) Run File [object.EXE] (运行文件) List File [NUL.MAP] (列表文件) Libraries [.LIB] (库文件)
目标代码模块表(各模块 之间用+号隔开) 连接后生成的执行文件名 (缺省:目标文件名) 列表文件名(缺省:无文 件名)
第5章 汇编语言程序设计
5.4 宏指令语句
1.宏指令、宏定义和宏调用 宏指令是源程序中具有独立功能的一段程序代 码。在汇编语言中,如果在源程序中需要多次使用同 一个程序段,可以将这个程序段定义(宏定义)为一
个宏指令,然后每次需要是,即可简单地用宏指令名
来代替(称为宏调用),从而避免了重复书写,使源
程序更加简洁、易读。
第5章 汇编语言程序设计
5.5.2 用汇编程序将.ASM文件汇编成目标程序文件.OBJ
在对汇编语言源程序文件(简称ASM文件) 汇编时,汇编程序将对ASM文件进行二遍扫描。 若程序文件中有语法错误,则在结束汇编后将 指出源程序中的错误语句及错误类型。否则将 在汇编后生成目标程序文件(即OBJ文件) 完成汇编功能的是小汇编程序ASM或宏汇 编程序MASM。 汇编过程如下表所示: