计算机组成原理——指令与数据的寻址方式
前言:
指令的定义:计算机执行某种操作的命令。从计算机组成的层次结构来看,计算机的指令有微指令,机器指令,宏指令之分。
微指令:微程序级的命令,它属于硬件。
宏指令:由若干条机器指令组成的软件指令,它属于软件。
机器指令:介于微指令和宏指令之间,每一条指令可完成一个独立的算术运算或逻辑运算。
指令系统的定义:一台计算机中的所有机器指令的集合。
指令系统的功能:表示一台计算机性能的重要因素,是设计一台计算机的硬件与低层软件的接口。指令系统的格式与功能不仅影响机器的硬件结构,还影响着系统软件。
指令集就是计算机硬件和软件的交界面,软件通过指令系统告诉计算机的硬件要做什么操作;计算机的硬件通过指令系统把运算结果和硬件的状态返回给软件。
指令字长(固定字长、可变字长):一条指令的长度是多少位。
指令系统的发展情况:
- 复杂指令系统计算机,简称CISC
庞大的指令系统使计算机的研制周期变长,难以保证正确性,不易调试维护。采用了大量使用频率很低的复杂指令而造成硬件资源浪费。 - 精简指令系统计算机,简称RISC
提出了便于VLSI技术实现的精简指令系统计算机。
一、指令格式
指令格式:指令字用二进制代码表示的结构形式,通常由操作码字段和地址码字段组成。操作码字段表征指令的操作属性与功能(如加法、减法、取数、存数等),地址码字段指定参与操作的操作数的地址。
-
操作码字段 (反映了机器做什么样的操作,对什么数进行操作)
不同的指令用操作码字段的不同编码来表示,每一种编码代表一种指令。例如,如果操作码是3位,用001代表计算机执行加法操作,010代表计算机执行减法操作等等。CPU中的专门电路用来解释每一个操作码,因此计算机能够执行操作码表示的操作。
(1)长度固定:用于指令字长较长的情况。
(2)长度可变:操作码分散在指令字的不同字段。
(3)拓展操作码字段:保留码点,操作码的位数随着地址数的减少而增加。减少地址码的个数,来扩展操作码的长度,增加指令的条数。为了区分操作码的位数,一定要保证短操作码一定不能是长操作码的前缀。一般来说,高频使用的指令,用短操作码表示;低频使用的指令,用长操作码表示。 -
地址码字段
(1)四地址
注意用括号括起来,如(A)操作码字段A指明的是操作数的地址,而不是操作数本身。
现代计算机或模型机中PC代表下一条将要执行的指令,用PC代替A4字段。
(2)三地址
A1为被操作数地址,A2为操作数地址,A3为存放操作结果的地址。
(3)二地址
在二地址指令格式中从操作数的物理地址来说,可以分为三种类型:
- SS(存储器—存储器)型指令 :访问内存的指令格式。参与操作的数都在内存中,从内存某单元取操作数,操作结果放至内存的另一单元,因此机器执行这种指令需要多次访存。
- RR(寄存器—寄存器)型指令 :访问存储器的指令格式。通常需要多个通用寄存器或个别专用寄存器,从寄存器中取操作数,把操作数的结果放到另一个寄存器。这种指令的执行速度很快,因为这种指令不需要访问内存。
- RS(寄存器—存储器)型指令:既要访问内存单元,又要访问寄存器。既要访问内存单元,又要访问寄存器。
(4)一地址
一地址指令只有一个地址码,它指定一个操作数,另一个操作数地址是隐含的。(ACC)OP(A1)→ACC表示运算器中累加器ACC中的数是隐含的被操作数,指令字的地址码所指明的数为操作数,操作结果又放回到累加器ACC中,而累加器中原来的数被冲掉。
(5)零地址
零地址指令的指令字中只有操作码,而没有地址码。例如停机指令就不需要地址码,因为停机操作不需要操作数。
二、指令和数据的寻址方式
存储器既可以存放数据,又可以存放指令。因此,当某个操作数或某条指令存放在某个存储单元时,其存储单元的编号,就是该操作数或指令在存储器中的地址。
寻址方式:(1)下一条 欲执行 指令 的 指令地址(2)确定 本条指令 的 操作数地址
①指令寻址:
- 顺序寻址:(PC)+1→PC
- 跳跃寻址:由转移指令指出,JMP无条件跳转指令
②数据寻址:
1. 立即寻址
2. 直接寻址
3. 隐含寻址
4. 间接寻址
5. 寄存器寻址
6. 寄存器间接寻址
7. 基址寻址
8. 变址寻址
9. 相对寻址
10. 堆栈寻址