4. 第一个程序
4.1 一个源程序从写出到执行的过程
-
编写汇编源程序
-
对源程序进行编译链接
对源程序文件中的源程序进行编译,产生目标文件;在用链接程序对目标文件进行链接,生成可在操作系统中直接运行的可执行文件,可执行文件包含两部分:
- 程序(机器码)和数据
- 相关的描述信息(如:程序体积,占用内存空间)
-
执行可执行文件中的程序
4.2 源程序
assume cs:codesg
codesg segment
mov ax,0123H
mov bx,0456H
add ax,bx
add ax,ax
mov ax,4c00H
int 21H
codesg ends
end
-
伪指令
伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作
-
XXXX segment · · XXXX ends
segment 和 ends 是成对使用的伪指令,功能是定义一个段;segment 说明一段开始,ends说明一个段结束。一个段必须要一个名称表示,如:XXXX
汇编程序由多个段组成,段被用来存放代码、数据、栈空间使用。
-
end
是一个汇编程序结束标记。
ends
则是一个段的结束。 -
assume
将有特定用途的段和相关的段寄存器关联起来,如:代码段 cs:codesg
-
-
源程序中的程序
源程序文件中的所有内容称为源程序
源程序中最终由计算机执行、处理的指令或数据,称为程序
程序最先以汇编指令存在源程序中,经过编译、链接后转变为机器码,存储在可执行文件中。
-
标号
一个标号指代了一个地址。比如codesg在segment前面作为一个段名称,这个 段的名称最终被编译、链接程序处理为一个段的段地址
-
程序的结构
- 定义一个段,名为adc
- 段中写入汇编指令
- 指出程序在何处结束
- 将adb代码段和cs联系起来
assume cs:adb;第四步 abc segment;第一步 mov ax,2;第二步 add ax,ax add ax,ax abc ends end;第三步
-
程序返回
一个程序结束后,将CPU的控制权交还给使得它得意运行的程序,称为程序返回。
在程序末尾添加返回的程序段实现程序返回,例如:
mov ax,4c00H int 21H
-
语法错误和逻辑错误
程序在编译时被编译器发现的错误是语法错误,但逻辑错误程序对于编译器来说是正确的。
4.3 编辑源程序
4.4 编译
在编译一个源程序之前首先要找到一个相应的编译器。假如使用masm汇编编译器。
4.5 链接
对源程序进行编译得到目标文件后,我们需要对目标文件进行链接,得到可执行文件。
假如使用 overlay linker连接器
4.7 .exe执行
4.9程序执行过程的跟踪
可以用debug来跟踪一个程序的运行过程。