之前都是在debug下执行一些指令。
1.一个程序从写到执行的过程
a.流程简单概括
- 编写汇编源程序
- 对源程序进行编译连接
- 执行可执行文件中的程序
b.可执行文件包括两部分,程序(由编译翻译过来的机器码)以及数据。第二部分相关的描述信息(如程序大小,占用内存容量等)
c. 操作系统根据可执行文件的描述信息,将可执行文件中的数据和机器码载入到内存当中,并进行相关的初始化,然后由CPU执行程序。
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
以上是一个简单的源程序
a. 伪指令
在汇编语言的源程序中,包含两种指令,一种是汇编指令,一种是伪指令。汇编指令是对应机器码的指令,可以被编译为机器指令,最终由CPU执行。伪指令是有编译器执行的指令,编译器根据为指令来进行相关的编译工作。
b. 一个源程序中所有将被计算机处理的信息: 指令,数据,栈,都被划分到不同的段中。
c. 一个有意义的程序至少要有一个段,用于存放代码,也就是代码段。
上图是程序由编译后编程机器码的实例图
3. 编辑源程序
a. 任意的文本编辑器都可以编辑源程序。
4.编译
a.可以采用微软的MASM.exe 进行编译
5. 连接
a. 在对源程序进行编译后,我们需要对目标文件进行连接,从而得到可执行文件。(可采用link.exe)
b .连接的作用
- 当源程序很大时,可以将它拆分为多个源程序来进行编译,每个源程序编译成目标文件后,可以连接在一起,生成一个可执行文件。
- 程序中调用了某个库中的子程序,需要将这个库文件和该程序的生成的目标文件连接到一起,生成一个可执行文件。
- 一个源程序编译后,得到的存有机器码的目标文件,目标文件中的有些内容还不能直接用来生成可执行文件,连接内容将这些处理称最终的可执行信息。
- 对于连接的过程,可执行文件是我们最终需要得到结果。
6.以简单的方式进行编译和连接
a. mass c:\1; (c;\1对应的路径)
b. link 1; (在link后面加上目标文件的路径和文件名)
7.exe 的执行
8.谁将可执行文件中的程序装载进内存中并使它运行呢?
a. DOS中的command.com(将程序装载到内存中)
9.程序执行过程的跟踪。
a. 采用Debug来跟踪一个程序的过程。
b. 在DOS中程序加载顺序是: command加载debug,debug加载.exe程序,返回则直接逆序到command。