计算机组成原理—指令系统
典型的指令格式
操作码 OP——指明操作性质的命令码,提供指令的操作控制信息。
操作对象——说明操作数存放的地址,有时则就是操作数本身。
微机中常使用变长操作码,在不增加指令字长度的情况下可表示更多的指令,但增加了译码和分析难度,需更多硬件支持
操作数个数的类型
零地址指令,也叫无操作数指令。例:空操作NOP、停机HLT
一地址指令 , 例:递增,移位,取反,INC AX,NOT BX
二地址指令, 例:[A1]+[A2]→[A1],[A2]为源地址,[A1]为目的地址。
三地址指令,例: [A1]+[A2]→[A3],其中[A1]、[A2]为源地址,[A3]为目的地址,操作后源地址内容不变,仅被拷贝。
在边界对齐的32位(4B)字长的计算机中,存放和访问存储器数据时,可按字、半字、字节或双字的方式进行。
“双字”地址为8的整数倍,最低3位:000
“字”地址为4的整数倍,最低两位:00
“半字”地址为2的整数倍,最低位:0
指令和数据的寻址方式
寻址方式分为 指令寻址方式 和 地址寻址方式。
在冯·诺依曼型结构的计算机中,内存中指令的寻址和数据的寻址是交替进行的。
指令的寻址方式
有两种;
顺序寻址方式
指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序进行。
指令的顺序寻址方式,必须使用程序计数器PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。
跳跃寻址方式
所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。
操作数基本寻址方式
隐含寻址
不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。
操作数在专用寄存器中
立即寻址
指令的地址字段指出的不是操作数的地址,而是操作数本身。
特点:指令中包含的操作数立即可用,节省了访问内存的时间。
操作数=A.
直接寻址
特点:在指令格式的地址字段中直接指出操作数在内存的地址A。
如果用D表示操作数,那么直接寻址的表达式为:D=(A).
EA=A.
间接寻址
相对于直接寻址而言,指令地址字段中的形式地址A不是操作数D的真正地址,而是操作数地址的指示器。
两次访存,影响指令执行速度。
EA=(A).
寄存器寻址
当操作数不在内存中,而是放在CPU的通用寄存器中,可采用寄存器寻址方式。
指令结构中的RR型指令,就是采用寄存器寻址方式的例子。
EA=R
寄存器间接寻址
与寄存器寻址的区别:
指令格式中的寄存器内容不是操作数,而是操作数的地址,该地址指明的操作数在内存中。
EA=(R).
偏移寻址
直接寻址和寄存器间接寻址的结合。
EA=A+(R);
常用的三种偏移寻址:
相对寻址:EA=A+(PC);引用的专用寄存器是程序计数器(PC).
基址寻址:EA=A+(R);引用的专用寄存器是基址寄存器.
变址寻址:EA=A+(R);引用的专用寄存器是变址寄存器.
段寻址方式
EA=A+(R);
堆栈寻址
EA=栈顶