您的位置:首页 > 编程语言

汇编语言复习摘要四——第一个汇编程序

2010-09-24 15:48 281 查看
1. 程序执行流程:简单说下,编写汇编程序->对程序进行编译和链接(注意,是两个动作)->执行可执行文件。操作系统将依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化,然后由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


1) 伪指令:汇编程序中包含两种指令,第一是伪指令,第二是汇编指令。区别在于:汇编指令是有对应的机器码的指令,可以被编译为机器码,最终由CPU来执行;伪指令没有对应的机器码,不被CPU执行,可以理解为用来助记。

上面程序中有3种伪指令:

a. codesg segment

... ...

codesg ends

其中,segment & ends 是一对成对使用的伪指令。这是必须用到的一对伪指令。它们合起来的功能是定义一个段。segment说明段的开始,ends说明段的结束。一个汇编程序往往由多个段组成,例如数据段,代码段,栈段等等,一个有意义的汇编程序最起码要包含一个段,也就是代码段,用来存放代码。

b. end

最后面的end是伪指令,表示程序在这里结束了。这个是每个程序都必须的,如果缺少了则编译器无法知道程序在哪里结束。

c. assume

assume的意思是“假设”,它假设某一段寄存器跟程序中的某一个用segment..ends定义的段相关联。例如上面例子中,

assume cs: codesg 就是用代码段的段codesg和CPU中段寄存器cs相关联。

2)标号:比如:codesg就是一个标号,一个标号代表了一个地址。

3)结构:一般都是按照这样的结构来编码的:定义一个段->在这个段中写入指令->指出结束地方。

4)程序返回:一个程序是必须返回的,将CPU的控制权还给使得它运行的程序。我们通过添加两条指令来实现返回:

mov ax, 4C00H

int 21H

3. 程序如何被加载以及执行:任何通用的操作系统都会提供一个称为 shell(外壳)的程序,用户使用这个程序来操作计算机系统进行工作。所以,一个程序要执行,首先由shell把它加载到内存中去,然后,shell将设置CPU的CS:IP指向程序的第一条指令,即程序的入口,从而使程序运行起来;程序执行结束后,重新回到程序刚开始执行的地方。

(关于编译和链接汇编程序的过程这里不记载)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: