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