汇编语言 第四章 第一个程序

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

  1. 编写汇编源程序。

    产生一个存储源程序的文本文件。

  2. 对源程序进行编译连接。

    使用汇编语言编译程序对源文件中的源程序进行编译,产生目标文件;再用连接程序对目标程序进行连接,生成可案子操作系统中直接运行的可执行文件。

    可执行文件包含两部分:

    • 程序(从源程序中的汇编指令翻译过来的机器码)和数据(源程序中定义的数据)
    • 相关的描述信息
  3. 执行可执行文件中的程序。 ### 4.2 源程序

  1. 伪指令

    汇编语言程序中有两种指令,汇编指令和伪指令。汇编指令有对应机器码的指令,可被翻译为机器指令,最终被 CPU 执行;伪指令则有编译器来执行。

    (1)segment 和 ends

    segment 和 ends 是一对成对使用的伪指令,这是在写可被变异的汇编程序时,必须要用到的一对伪指令。它们的功能是定义一个段,分别指段的开始和结束,且一个段必须有一个名称来标识。使用格式如下:

    (2)end

    end 是一个汇编程序的结束标记。

    (3)assume

    这条伪指令的含义为假设。它假设某一段寄存器和程序中的某一个用 segment…ends 定义的段相关联。在程序 4.1 中,用 assume cs:codesg 将用作代码段的段 codesg 和 CPU 中的段寄存器 cs 联系起来。

  2. 源程序中的“程序”

    将源程序文件中的所有内容称作源程序,将源程序中最终由计算机执行、处理的指令或数据,称为程序。

  3. 标号

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

  1. 程序的结构

  2. 程序返回

    一个程序 P2 在可执行文件中,则必须有一个正在运行的程序 P1,将 P2 从可执行文件中加载入内存后,将 CPU 的控制权交给 P2,P2 才能得以运行。P2 开始运行后,P1 暂停运行。

    当 P2 运行完毕后,将 CPU 的控制权交还给 P1,此后 P1 继续运行。这个过程为程序返回

  3. 语法错误和逻辑错误

    语法错误:在编译时被编译器发现的错误;

    逻辑错误:编译后,在运行时发生的错误。

4.3 编译源程序

4.4 编译

对上一节的 1.asm 进行编译,生成包含机器代码的目标文件。

4.5 连接

连接的作用:

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

4.7 1.exe 的执行

程序执行完没有输出,因为程序没有输出屏幕结果的,很正常。

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

在 DOS 中直接执行 1.exe 时,是正在运行的 command,将 1.exe 中的程序加载入内存;

command 设置 CPU 的 CS:IP 指向程序的第一条指令(程序的入口),从而使程序得以运行;程序运行结束后,返回到 command 中,CPU 继续运行 command。

4.9 程序执行过程的跟踪

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×