前言
此章较为简略
源程序从编写到执行
-
第一步:编写汇编程序
过程:使用文本编辑器编写汇编源程序
结果:产生了一个存储源程序的文本文件; -
第二步:对源程序进行编译连接
过程:编译程序对源程序进行编译;产生目标文件。连接程序对目标文件进行连接
结果:产生了可在系统中直接运行的可执行文件可执行文件包括两部分:
程序(机器码)和数据(定义的数据);相关的描述信息(程序大小,占用的内存空间等) -
第三步:执行可执行文件中的程序
源程序
示例:
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
在汇编程序源程序中,有两种指令:伪指令和汇编指令
汇编指令会被编译器编译成机器指令,最终被CPU执行
而伪指令不会被编译,编译器会根据伪指令执行相关的编译工作
上述示例中出现了三种伪指令:
(1)xxx segment…xxx ends
codesg segment
...
codesg ends
#segment和ends是成对使用的,用来定义一个段
#segment表示段的开始;ends表示段的结束(end segment)
#一个汇编程序是由多个段组成的
(2)end
...
end
#end表示一个汇编程序的结束,如果编译器遇到了伪指令end就结束对源程序的编译
(3)assume
assume cs:codesg
#它假设某一段寄存器和程序中的某一个用segment...ends定义的段相关联
#我们可以用有特殊用途的段和相关的段寄存器关联起来
标号
codesg segment
...
codesg sement
#其中codesg就是一个标号
#这个段名称最后将会被编译和连接程序处理成一个段的段地址
程序返回
一个可执行文件该怎么运行呢?(以在DOS运行为例)
程序P2在可执行文件中,想要运行P2,必须由一个正在运行的程序P1将P2加载进内存中,将CPU的控制权交给
P2,P1暂停运行。
而在DOS中有一个command.com(与我们熟知的cmd有一些区别),它就负责担任P1的角色。
(1)在DOS中执行1.exe的时候,由正在运行的command.com将1.exe加载进内存中
(2)执行程序
(3)程序执行完成后,程序返回到command.com,CPU控制权转交回command.com