在汇编语言中,包含两种指令,一种是汇编指令,一种是伪指令。汇编指令是有对应的机器码的指令,
可以编译为机器指令,最终被cpu所执行。为伪指令没有对应的机器指令,最终不被cpu执行。伪指令是
由编译器来执行的指令, 编译器根据伪指令来进行相关的编译工作。
xxx segment
:
:
:
xxx ends
segment 和ends 是一对成对使用的伪指令,定义一个段,segment定义一个段的开始,ends说明一个段
的结束,一个段必须有一个名称来标识
例如:段名 segment
段名 ends
一个汇编程序是有多个段组成的,这些段被用来存放代码、数据或者当作栈空间来使用,一个源程序中
所有将被计算机所处理的信息:指令、数据、栈,被划分到不同的段中。
一个有意义的汇编程序中至少要有一个段,这个段用来存放代码
end
end 是一个汇编程序的结束标记,编译器在编译汇编程序的过程中,如果碰到了伪指令end,就结束对源
程序的编译,所以在编写源程序的时候一定要记得在结尾处加上end
注意:ends 和 end 不要搞混了,ends是标记一个段的结束,可以理解为end segment,而end的作用是
标记整个程序的结束
assume
这条伪指令的含义为"假设",它假设某一个寄存器和程序中的某一个segment…ends定义的段相关联,通
过assume说明这种关联,在需要的情况下,编译程序可以将段寄存器和某一个具体的段相联系.
assume并不是一条非要深入理解不可的伪指令,需记得:用assume将有特定用途的段和相关的段寄存器
关联起来即可。
用汇编语言写的源程序,包括伪指令和汇编指令。源程序中的汇编指令组成了最终由计算机执行的程序
,而源程序中的伪指令,是用编译器来处理,它们并不实现我们编程的最终目的,所以我们这里说的程
序是值源程序中最终由计算机执行、处理的指令或者数据。
汇编源程序中,除了汇编指令和伪指令外,还有一些标号,一个标号指代了一个地址,比如在segment前
面的xxx,作为一个段的名称,这个段的名称最终被编译、连接程序处理为一个段的地址。
一个汇编程序最先以汇编指令的形式存在在源程序中,经编译、连接后转变为机器码,存储在可执行文
件中。
操作系统是由多功能模块组成的庞大复杂的软件系统。任何通用的操作系统,都要提供一个称为shell的
程序,用户通过操作shell 还操作计算机系统进行工作。
DOS中有个程序叫command.com,这个程序在DOS中称为命令解释器,也就是DOS系统下的shell
DOS启动时,先完成其他初始化工作,然后运行command.com,
用户可以输入要执行的命令,这些命令由command来执行完成,
如要执行一个可执行程序,则输入该程序的可执行文件的名称,command命令首先根据文件名找到可执行
文件,然后将这个可执行文件加载入内存,设置CS:IP指向程序的入口,之后,command暂停运行,cpu运
行程序,程序结束,返回到command,等待用户输入。