4.1 一个源程序从写出到执行的过程
第一步:编写汇编源程序
使用文本编辑器,用汇编语言编写汇编源程序。这一步工作的结果是产生了一个存储源程序的文本文件
第二步:对源程序进行编译连接
使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件;再用连接程序对目标文件进行连接,生成可在操作系统中直接运行的可执行文件
可执行文件包含两部分内容:
第三步:执行可执行文件中的程序
操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如设置CS:IP指向第一条要执行的指令),然后由CPU执行程序
4.2 源程序
伪指令:
在汇编语言中,包含两种指令,一种是汇编指令,一种是伪指令。汇编指令是有对应的机器码的指令,可以被编译为机器指令,最终为CPU所执行。而伪指令没有对应的机器指令,最终不被CPU所执行。伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作
几种伪指令:
XXX segment ... XXX ends
segment和end是一对成对使用的伪指令。这是在写可被编译器编译的汇编程序时,必须要用到的一对伪指令。segment和ends的功能是定义一个段,segment说明一个段开始,ends说明一个段结束。
一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间使用
end
end是一个汇编程序的结束标志。汇编器在编译汇编程序的过程中,如果碰到了伪指令end,就结束对源程序的编译
assume
这条伪指令的含义为“假设”,它假设某一段寄存器和程序中的某一个segmend...ends定义的段相关联。通过assume说明这种关联。在我们编程时,记着用assume将有特定用途的段和相关的段寄存器关联起来
源程序中的程序:伪指令是给计算机编译器处理的,它不能实现我们的目标。这里说的程序就是指源程序中最终由计算机执行、处理的指令或数据
标号:汇编源程序中,除了汇编指令和伪指令外,还有一些标号,比如”codesg“。一个标号代表了一个地址,这个标号最终会被编译、连接处理为一个段的段地址
