汇编语言学习笔记 - 第四章

第 4 章 第一个程序

4.1 一个源程序从写出到执行的过程

  • 编写汇编程序

    • 使用文本编辑器(如记事本等),用汇编语言编写汇编源程序
    • 目的是产生一个存储源程序的文本文件
  • 对源程序j进行编译连接

    • 使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件;再用连接程序对目标文件进行连接,生成可在操作系统中直接运行的可执行文件。
    • 可执行文件包含两部分:
      • 程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据)
      • 相关的描述信息(比如:程序有多大,要占用多少内存空间等)
    • 目的是产生一个可在操作系统中运行的可执行文件
  • 执行可执行文件中的程序

    • 在操作系统中,执行可执行文件中的程序。
    • 操作系统依照可执行文件中的描述信息,将可执行文件中的机器码和数据加载入内存,并进行相关的初始化(比如设置CS:IP指向第一条要执行的指令),然后由 CPU 执行程序。

4.2 源程序

举例:程序 4.1
在这里插入图片描述

1. 伪指令

  • 汇编源程序中包含两种指令:一种是汇编指令,另一种是伪指令。
  • 汇编指令是有对应的机器码指令,可以被编译为机器指令,最终被 CPU 所执行。
  • 伪指令没有对应的机器码指令,最终不被 CPU 所执行。
  • 伪指令是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作。

以下介绍三种伪指令:

  1. 段定义伪指令
XXX segment
    ...
XXX ends
  • segment 和 ends 成对使用,定义一个段,segment 表示段开始,ends 表示段结束。
  • 一个段必须有一个名称来标识。
  • 一个汇编程序中由多个段组成的,被用来储存代码、数据或当作栈空间来使用。
  • 一个有意义的汇编程序中至少要有一个段,这个段用来存放代码。
  1. 汇编程序结束伪指令
  • end 是一个汇编程序的结束标记,编译器碰到伪指令 end,就结束对源程序的编译。
  • 注意,不要搞混了 end和ends, ends是和segment成对使用的,标记一个段的结束,ends的含义可理解为“end segment”。我们这里讲的end的作用是标记整个程序的结束。
  1. 假设伪指令
  • assume 含义是假设,它假设某一段寄存器和程序中的某一个用 segment···ends 定义的段相关联。

举例:
比如,在程序4.1中,我们用codesg segment … codesg ends定义了一个名为codseg的段,在这个段中存放代码,所以这个段是一个代码段。在程序的开头,用assume cs:codesg将用作代码段的段codesg和CPU中的段寄存卷cs联系起来。

2.源程序中的“程序”

  • 用汇编语言写的源程序,包括伪指令和汇编指令。源程序中的伪指令是由编译器来处理的,它们并不实现。这里的程序时指源程序中最终由计算机执行、处理的指令或数据,即汇编指令。
  • 以后可以将源程序文件中的所有内容称为源程序,将源程序中最终由计算机执行、处理的指令或数据,称为程序。
  • 程序最先以汇编指令的形式存在源程序中,经编译、连接后转变为机器码,存储在可执行文件中。这个过程如图4.2所示。

在这里插入图片描述

3.标号

  • 汇编源程序中,包含伪指令、汇编指令和标号(codesg)。
  • 一个标号指代了一段地址。

比如codesg在segment的前面,作为一个段的名称,这个段的名称最终将被编译、连接程序处理为一个段的段地址。

4.程序的结构

  • 源程序是由一些段构成的。我们可以在这些段中存放代码、数据、或将某个段当作栈空间。

在这里插入图片描述
在这里插入图片描述

5.程序返回

在这里插入图片描述

在这里插入图片描述

6.语法错误和逻辑错误

在这里插入图片描述
在这里插入图片描述

4.3 编辑源程序

在这里插入图片描述
在这里插入图片描述

4.4 编译

在这里插入图片描述
在这里插入图片描述

4.5 连接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.6 以简化的方式进行编译和连接

在这里插入图片描述
在这里插入图片描述

4.7 1.exe 的执行

在这里插入图片描述

4.8 谁将可执行文件中的程序转载进入内存并使它运行?

在这里插入图片描述

举例:
在这里插入图片描述在这里插入图片描述

举例:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

4.9 程序执行过程中的跟踪

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


版权声明:本文为qq_40279151原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。