2020年计算机考研复习已经开始,新东方在线在此整理了2020考研计算机组成原理知识点之指令系统,希望能帮助大家!
(一) 指令格式
1. 指令的基本格式
计算机是通过执行指令来处理各种数据的。为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息:
(1)操作码,具体说明了操作的性质及功能。
(2)操作数的地址。
(3)操作结果的存储地址。
(4)下一条指令的地址。
从上述分析可知,一条指令实际上包括两种信息即操作码和地址码。
操作码(operation code)用来表示该指令所要完成的操作(如加、减、乘、除、数据传送等),其长度取决于指令系统中的指令条数。
地址码用来描述该指令的操作对象,或者直接给出操作数或者指出操作数的存储器地址或寄存器地址(即寄存器名)。
2. 定长操作码指令格式
1)零地址指令
OPCODE——操作码
指令中只有操作码,而没有操作数或没有操作数地址。这种指令有两种可能:
(1)无需任何操作数,如空操作指令,停机指令等。
(2)所需的操作数是默认的。如堆栈结构计算机的运算指令,所需的操作数默认在堆栈中,由堆栈指针SP 隐含指出,操作结果仍然放回堆栈中。又如 Intel 8086 的字符串处理指令,源、目的操作数分别默认在源变址寄存器 SI 和目的变址寄存器 DI 所指定的存储器单元中。
2)一地址指令
OPCODE——操作码
A——操作数的存储器地址或寄存器名
指令中只给出一个地址,该地址既是操作数的地址,又是操作结果的存储地址。如加 1,减 1 和移位等单操作数指令均采用这种格式,对这一地址所指定的操作数执行相应的操作后,产生的结果又存回该地址中。
在某些字长较短的微型机中(如早期的 Z80,Intel8080,MC6800 等),大多数算术逻辑指令也采用这种格式,第一个源操作数由地址码 A 给出,第二个源操作数在一个默认的寄存器中,运算结果仍送回到这个寄存器中,替换了原寄存器内容,通常把这个寄存器称累加器。
3)二地址指令
OPCODE——操作码
A1——第一个源操作数的存储器地址或寄存器地址。
A2——第二个源操作数和存放操作结果的存储器地址或寄存器地址。
这是最常见的指令格式,两个地址指出两个源操作数地址,其中一个还是存放结果的目的地址。对两个源操作数进行操作码所规定的操作后,将结果存入目的地址,在本例中即为 A2 指定的地址
(二) 指令的寻址方式
1. 有效地址的概念
操作数的真实地址称为有效地址,记做 EA,它是寻址方式和形式地址共同来决定的。
2. 数据寻址和指令寻址
寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令的地址,与硬件结构密切相关,寻址方式分为指令寻址和数据寻址两大类
指令寻址分为顺序寻址和跳跃寻址两种。
顺序寻址可以通过程序计数器 PC 加 1 自动形成下一条指令的地址,跳跃寻址则通过转移类指令实现,是通过对 PC 的运算得到新的下一条指令的地址。