4.4 指令和数据的寻址方式
4.4.1 指令的寻址方式
4.4.2 操作数基本寻址方式
形成操作数有效地址的方法,称为寻址方式
例如,一种单地址指令的结构如下: 操作码OP、变址X、间址I、形式地址A
(1)隐含寻址
指令中隐含着操作数的地址
(2)立即寻址
指令中在操作码字 段后面的部分不是通常意义上的操作数地址,而是操作数本身,也就是说数据就包含在指令中,只要取出指令,就取出了可以立即使用的操作数
(3)直接寻址
指令中地址码字段给出的地址A就是操作数的有效地址EA(Effective Address),即EA=A
(4)间接寻址
指令的地址码部分给出的 地址A不是操作数的地址,而是存放操作数地址的主存单元的地址,简称操作数地址的地址
(5)寄存器寻址
在指令的地址码部分给出CPU内某一通用寄存器的 编号,指令的操作数存放在相应的寄存器中,即 EA=Ri
优点:①由于寄存器在CPU的内部,指令在执行时从寄存 器中取操作数比访问主存要快得多
②由于寄存器的数量较少,因此寄存器编号所占位数也较少,从而可以有效减少指令的地址码字段的长度
(6)寄存器间接寻址
为了克服间接寻址中多次访存的缺点,可采用寄存器间接寻址, 即将操作数放在主存储器中,而操作数的地址放在某一通用寄存器中,然后在指令的地址码部分给出该通用寄存器的编号, 这时有EA=(Ri)
(7)偏移寻址
①相对寻址
由程序计数器PC提供基准地址,而指令的地址码部分给出相对的位移量D,两者相加后 作为操作数的有效地址,即:EA=(PC)+D
②基址寻址
基址寄存器的位数可以设置得很长,从而可以在较 大的存储空间中寻址
③变址寻址
将指令的地址码部分给出的基准地 址A与CPU内某特定的变址寄存器Rx中的内容相加,以形成操作数的有效地址
(8)分寄存器堆栈、存储器堆栈
以先进后出原理存储数据