汇编语言语法介绍
常用的连接程序是LINK.EXE,它在DOS系统和Microsoft Masm 5.0软件 包中都有提供。
h
5
5) 调试
完成设计、编辑、汇编、连接后得到的可执行程序中可能存在一些错误 (Bug),这些错误可能是设计缺陷或编辑时的笔误,它们可能使程序运 行出现结果错误、死机甚至其它无法预测的后果。我们称这类错误为逻 辑错误,它们是汇编器和连接器都无法发现的。这类错误只能靠程序员 凭借调试器对可执行程序进行耐心细致的跟踪调试,才能逐一排除。
其具体功能包括以下几方面:
1) 检查源程序中的语法错误,并给出错误信息 2) 产生源程序的目标程序,并给出列表文件 3) 支持地址和数据的符号变量表示 4) 支持对内存的管理 5) 支持多种类型的数据表示 6) 支持程序的模块化组织 7) 支持宏汇编、条件汇编等高级操作
h
3
汇编语言程序的开发过程和工具
③ 操作数:其个数和类型由指令助记符决定。
④ 注释:以分号(;)开始,是对该语句行的文字解释,从分号开始到本行 结束的内容全部被汇编器忽略,对程序的汇编及执行都没有影响。
错误、非法指令、操作数类型不匹配等,提示程序员对源程序加以修改 ,并重新汇编。
常用的汇编器有 Masm、Turbo ASM等。
h
4
4) 连接
汇编后生成的目标程序虽然记载了CPU可理解的机器代码,但它缺少 DOS所需要的重定位信息,所以并不能直接运行。目标程序必须经过连 接器连接,生成附带重定位信息的可执行程序(EXE文件或COM文件) 才能运行。
目标程序: 由源程序经过汇编而得到的一组机器代码叫目标程序,如OBJ文 件。
连接程序: 将目标文件与库文件或其它目标文件连接形成可执行文件的软 件叫连接程序
可执行程序:由机器代码组成的可提供操作系统执行的文件叫可执行程序或 可执行文件,典型的如COM文件、EXE文件。
h
2
汇编程序的主要功能
汇编程序(即汇编器)总的功能就是将用ASCII码形式的汇编源 文件转换成二进制机器代码组成的目标文件。
标号: 指令助记符 操作数, …,操作数 ;注释 它由四部分组成,各部分之间用空格或制表符(TAB)分隔。
① 标号:不是必须的,只有当某条指令作为转移指令的目标时,该条指令 才需要加上标号,标号和指令之间必须用冒号(:)分隔。一个语句行可 以只由一个标号构成。
② 指令助记符:可以是8086/8088所有合法指令。
2、指示语句
指示性语句,又称伪语句、伪操作,其构成主体是伪指 令,它们告诉汇编程序做什么。汇编程序并不把伪语句翻译成 机器代码,它们只是用来指明汇编程序在汇编期间需要做的一 些操作,如定义符号,分配存储单元,初始化存储器等等。例 如:
COUNT DB ?
h
9
汇编语言语句的基本格式
1) 指令语句的格式为
第四章 汇编语言语法
✓ 汇编语言概念
✓ 汇编语言的编程过程
✓ 汇编语言程序结构
✓ 汇编语言程序语法
✓ 汇编语言伪指令
h
1
名词解释
汇 编: 将汇编语言编写的程序翻译成机器代码组成的目标程序的过程 成 为汇编
汇编程序: 实现自动完成汇编过程的软件叫汇编程序或汇编器,如 MASM.EXE。
源 程 序: 按汇编语言语法规则编写的文本文件叫汇编语言源程序或汇编语 言程序,如ASM文件。
. . . NAME2 ENDS END <程序起始地址标号>
每个段有一个名字,以SEGMENT语句作为段的开始,以ENDS语句作为段的结束
。这两者都必须有名字,而且名字必须相同。
整个源程序以END语句作为结束。
h
8
汇编语言语句的类型
1、指令语句
指令语句,就是8086/8088的机器指令,它们告诉CPU做什么。 汇编程序把它们翻译成机器代码。每一条指令语句产生一条 8086/8088指令,由CPU执行操作。如MOV,ADD,JMP等等
code ends
h
7
end main
;程序起始地址
汇编语言源程序的结构
汇编语言源程序采用分段结构,由若干个段构成一个源程序。而一个段又是由若干 个语句组成的,语句是汇编语言源程序的基础。源程序的一般格式为
NAMEl SEGMENT 语句
. . . NAMEl ENDS NAME2 SEGMENT 语句
连接器的一个任务就是从目标模块中产生一个运行模块,并使其具有可重 定位性。
连接器的第二个任务是可将几个目标模块结合成一个可执行的模块。并同 样使其具有可重定位性。这样,你可以一次编写程序的一部分,通过结 合,将几个目标模块合并,产生一个完整的运行模块。
连接器可以发现源程序中的连接错误,如段的溢出或覆盖,不存在或不匹 配的模块、不存在或不匹配的标号、变量等。
;定义代码段
assume cs:code, ds:data, es:data, ss:stack
main proc far
start:
push ds
xor ax, ax
push ax
mov ax, data
mov ds, ax
lea dx, hello
mov ah, 9
int 21h
ret
main endp
一般来说,开发汇编语言程序有以下面五个步骤:
1) 设计
根据任务要求,设计程序结构、算法,画出流程图。
2) 编辑
根据设计方案,创建汇编语言源程序。
它由程序员通过文本编辑器来完成。DOS下常用的有Edit、PE2等。
3) 汇编
将汇编语言源程序源程序转化为机器可以理解的目标程序。
汇编器用于完成这步工作。汇编器可以发现源程序中的语法错误,如格式
典型的调试器有DOS中的Debug,Borland公司的Turbo Debug, Microsoft 公司的Code View。它们都具有程序加载、运行、单步跟踪 、断点跟踪、查看修改存储器、查看修改寄存器、反汇编等基本功能。 后两种还具备源程序级调试等高级功能,使用起来更加得心应手。
h
6
汇编语言源程序示例
stack segment para stack 'stack' ;定义堆栈段 db 1024 dup (?)
stack ends
data segment para db 'Hello, world !', 0dh, 0ah, '$'
data ends
code segment para 'code'