📜  电脑组织|指令格式(零,一,二和三地址指令)

📅  最后修改于: 2021-06-28 09:01:05             🧑  作者: Mango

计算机根据提供的指令执行任务。计算机中的一条指令由称为字段的组组成。这些字段包含与计算机不同的信息,每件事都在0和1中,因此每个字段具有不同的重要性,CPU会根据这些重要性来决定要执行的操作。最常见的字段是:

  • 操作字段,指定要执行的操作(如加法)。
  • 地址字段,其中包含操作数的位置,即寄存器或存储器的位置。
  • 模式字段,指定如何建立操作数。

一条指令的长度各不相同,具体取决于它包含的地址数。通常,根据地址字段的数量,CPU的组织分为三种类型:

  1. 单一累加器组织
  2. 通用登记机构
  3. 堆栈组织

首先,组织工作涉及一个称为累加器的特殊寄存器。其次,多个寄存器用于计算目的。在第三个组织中,基于堆栈的操作不包含任何地址字段,因此无法进行任何操作。我们通常看到的是,不必只应用单个组织,而是将各种组织混合在一起。

根据地址数,指令分为:

请注意,我们将使用X =(A + B)*(C + D)表达式来演示该过程。

  1. 零地址说明–

    基于堆栈的计算机不使用指令中的地址字段。要首先对表达式求值,将其转换为显示波兰语表示法,即后期修正表示法。

    Expression: X = (A+B)*(C+D)
    Postfixed : X = AB+CD+*
    TOP means top of stack
    M[X] is any memory location
    PUSH A TOP = A
    PUSH B TOP = B
    ADD TOP = A+B
    PUSH C TOP = C
    PUSH D TOP = D
    ADD TOP = C+D
    MUL TOP = (C+D)*(A+B)
    POP X M[X] = TOP
  2. 一个地址说明–
    这使用一个隐含的ACCUMULATOR寄存器进行数据操作,一个操作数在累加器中,另一个在寄存器或存储器位置中。隐含意味着CPU已经知道一个操作数在累加器中,因此无需指定它。

    Expression: X = (A+B)*(C+D)
    AC is accumulator
    M[] is any memory location
    M[T] is temporary location
    LOAD A AC = M[A]
    ADD B AC = AC + M[B]
    STORE T M[T] = AC
    LOAD C AC = M[C]
    ADD D AC = AC + M[D]
    MUL T AC = AC * M[T]
    STORE X M[X] = AC
  3. 两个地址说明–
    这在商用计算机中很常见,可以在指令中指定两个地址,与前面的一条地址指令不同,结果存储在累加器中,这里结果存储在不同的位置而不是仅存储在累加器中,但是需要更多的位来表示地址。


    此处目标地址也可以包含操作数。

    Expression: X = (A+B)*(C+D)
    R1, R2 are registers
    M[] is any memory location
    MOV R1, A R1 = M[A]
    ADD R1, B R1 = R1 + M[B]
    MOV R2, C R2 = C
    ADD R2, D R2 = R2 + D
    MUL R1, R2 R1 = R1 * R2
    MOV X, R1 M[X] = R1
  4. 三个地址说明–
    它具有三个地址字段,用于指定寄存器或存储位置。创建的程序大小很短,但是每条指令的位数增加了。这些指令使程序的创建变得容易得多,但这并不意味着程序将运行得更快,因为现在指令仅包含更多信息,但是每个微操作(更改寄存器的内容,在地址总线中加载地址等)将在一个周期内执行。只要。

    Expression: X = (A+B)*(C+D)
    R1, R2 are registers
    M[] is any memory location
    ADD R1, A, B R1 = M[A] + M[B]
    ADD R2, C, D R2 = M[C] + M[D]
    MUL X, R1, R2 M[X] = R1 * R2