1.1 程序从写出到执行过程
1> 编写汇编源程序
使用文本编辑器,用汇编语言编写汇编源程序。产生了一个存储源程序的文本文件。
2> 对源程序进行编译连接
使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件;再用连接程序对目标文件进行连接,生成可在操作系统中直接运行的可执行文件。
可执行文件包含两部分内容: (1)程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据) (2)相关的描述信息(程序有多大、要占用多少空间内存等)
3> 执行可执行文件中的程序
在操作系统中,执行可执行文件中的程序。
注:操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如设置CS:IP指向第一条要执行的指令),然后由CPU执行程序。
1.2 源程序
1.伪指令
伪指令是由编译器来执行的指令, 编译器根据伪指令来进行相关的编译工作。
(1)段名 segment : 段名 ends
segment和ends是一对成对使用的伪指令,在写汇编程序时必须要用到。
功能为定义一个段,segment说明一个段开始,ends说明一个段结束。
一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用的。一个源程序中所有将被计算机所处理的信息:指令、数据、栈,被划分到了不同的段中。
注:一个有意义的汇编指令中至少要有一个段,这个段用来存放代码。
(2)end
end是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到了伪指令end,就结束对源程序的编译。
(3)assume
含义为·“假设”,它假设某一段寄存器和程序中的某一个用segment…ends定义的段相关联。(记得要用assume将有特定用途的段和相关的段寄存器关联起来)
例如:代码段codesg的连接:assume cs:codesg
2.源程序中的“程序”
以后可以将源程序文件中的所有内容称为源程序,将源程序中最终由计算机执行、处理的指令或数据,称为程序。
3.标号
一个标号指代了一个地址。作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。
4.程序返回
一个程序结束后,将CPU的控制权交还给使它得以运行的程序,称为:程序返回。应在程序的末尾添加返回的程序段。
mov ax 4c00H int 21H
注:一个程序P2在可执行文件中,则必须有一个正在运行的程序P1,将P2从可执行文件中加载如内存中,将CPU的控制权交给P2,P2才能得以运行。P2开始运行后,P1暂停运行。 而当P2运行完毕后,应该将CPU的控制权交换给使它得以运行的程序P1,此后,P1继续运行。
小结:
5.语法错误和逻辑错误
一般来说,程序在编译时被编译器发现的错误是语法错误。 (如:伪代码缺失或错误)
在源程序编译后,在运行时发生的错误是逻辑错误。(如:程序没有返回)
|