天天看点

二、汇编系统的基本原理

汇编系统概述

  • 每一种特定型号的计算机系统都有自己特定的机器指令集合,集合中每条指令都代表一项具体的操作,例如从内存取数据到寄存器。这个机器指令集合就是机器语言,由机器语言编写的程序就称为机器程序。机器指令本质上是一个特定长度的二进制串,特定的位表示操作码,而另外的位表示操作数。
  • 由于机器程序都是由二进制的机器指令组成的,因此在编写机器程序的时候,不仅要记住特定操作码的二进制表示,还需要记下各个数据的地址的二进制表示。这是十分不方便的,而且容易出错,程序也很难读懂。于是人们就开始使用助记符(汇编指令)代表机器指令的操作码,并且使用伪指令(即不对应任何机器指令,只用于助记)和标号帮助确定数据或代码的位置,这就是汇编语言了。由于汇编指令和机器指令是相对应的,所以每种特定型号的计算机系统都有自己的汇编指令集合。
  • 由汇编指令编写的程序就是汇编源程序,计算机是不能直接执行汇编源程序的,而必须由 一个特殊程序根据伪指令的控制把汇编源程序转化为对应的机器语言程序。这个特殊的程序就是汇编程序。

汇编程序

  • 基本工作概述:

    (1)将每一条将执行汇编指令转换成对应的机器指令。

    (2)处理源程序中出现的伪指令。

    说明:这一工作通常需要对汇编程序进行超过一次的扫描。

  • 为了计算各汇编语句中标号的地址,人们在汇编程序中设立单元地址计数器LC,其初值一般为0。以后每处理完一条可执行的汇编语句和与存储分配有关的伪指令,LC的值就增加相应长度,这样LC的值始终是下一个存储单元的相对地址。当处理一条汇编语句标号时,就将LC当时的值定义为标号值。由于符号使用可能 出现在符号定义前,因此整个汇编程序的工作要通过对源程序进行二次扫描才能完成。

汇编程序的2次扫描

二、汇编系统的基本原理

装配程序

  • 概述:装配程序也称为连接程序,该程序主要完成以下两个任务:

    1、装入:指读入可‘复位’位的机器代码,修改‘复位’位的地址,把修改后的指令和数据放在内存的适当位置或者形成可执行文件。

    2、连接:把几个可‘复位’位的机器代码文件连接成一个可执行程序,这些文件可以是分别汇编得到的,也可以是系统提供的程序库机器代码。

  • 这种装配我们称为相对装配,装配程序从操作系统得到整个用户程序的装入起始地址, 汇编程序第一次扫描结束时,本程序段长度己经求出。装配程序的工作通过对各程序段的目标块进行二次扫描完成。

宏指令

  • 概述:用汇编语言进行程序设计时,用户经常会书写完全相同或类似的语句,为了程序设计方便,汇编程序往往向用户提供宏指令技术。按照这一技术,程序员可以相当自由地将一 组汇编语句定义成一条新指令——宏指令。宏指令一经定义,用户就可以在程序段其他地方书写这条指令,而将宏指令替换成原来指令序列的工作留给宏指令处理程序去完成。
  • 宏指令格式:

    [ 宏指令名 ] MACRO [形式参数]

    代码段

    ENDM

  • 工作原理:在使用宏指令技术时,用户应该先进行宏定义,将宏指令和一串指令序列联系起来。 各种汇编语言在宏指令定义开始和结束的规定上存在着微小差异。
  • 宏指令定义以后,用户就可以直接在程序中书写宏指令,称为宏调用。宏指令处理程序对宏指令定义开始语句和结束语句之间语句一一进行必要的变量信息替换,然后依次插入宏指令调用处,则这一过程称为宏指令展开。

继续阅读