📜  计算机组织 |指令格式(零、一、二、三地址指令)

📅  最后修改于: 2021-09-27 06:20:33             🧑  作者: Mango

计算机根据提供的指令执行任务。计算机中的指令包括称为字段的组。这些字段包含不同的信息,因为对于计算机来说,一切都在 0 和 1 中,因此每个字段都有不同的意义,CPU 决定执行什么。最常见的字段是:

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

指令长度可变,取决于它包含的地址数量。通常,CPU 组织根据地址字段的数量分为三种类型:

  1. 单累加器组织
  2. 一般注册机构
  3. 堆栈组织

在第一个组织中,操作涉及一个称为累加器的特殊寄存器。其次,多个寄存器用于计算目的。在第三种组织中,基于堆栈操作的工作由于它不包含任何地址字段。只需要应用一个组织,我们通常看到的大多是各种组织的混合。

根据地址的数量,指令分为:

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

  1. 零地址指令 –

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 .One 地址说明 –
这使用隐含的 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