寻址方式



寻址方式

寻址方式有指令寻址和数据寻址。

指令寻址方式有两种:顺序寻址和跳跃寻址。

顺序寻址:

由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序进行。那么就必须使用程序计数器(又称指令指针寄存器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。

跳跃寻址:

当程序转移执行的顺序时,指令的寻址就采用跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。程序跳跃后,按新的指令地址开始顺序执行。因此,指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址。

操作数寻址

(1)隐含寻址

这种类型的指令,不是明显地给出操作数的地址。而是在指令中隐含着操作数的地址。

(2)立即寻址

指令的地址字段指出的不是操作数的地址,而是操作数本身。


(3)直接寻址

指令格式的地址字段中给出的就是操作数在内存的地址。

(4)间接寻址

指令地址字段中的形式地址不是操作数的真正地址,而是操作数地址的指示器。

(5)寄存器寻址方式和寄存器间接寻址方式

当操作数不放在内存中,而是放在CUP的通用寄存器中时,采用寄存器寻址方式。

(6)相对寻址方式

相对寻址是把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。程序计数器的内容就是当前指令的地址。

(7)基址寻址

在基址寻址方式中将CPU中的基址寄存器的内容,加上指令格式中的形式地址而形成操作数的有效地址。基址寻址的优点是可以扩大寻址能力,因为与形式地址相比,基址寄存器的位数可以设置得很长,从而可以在较大的存储空间中寻址

(8)变址寻址

变址寻址方式与基址寻址方式计算有效地址的方法很相似,它把CPU中某个变址寄存器的内容与偏移量D相加来形成操作数有效地址。
但使用变址寻址方式的目的不在于扩大寻址空间,而在于实现程序块的规律变化。为此,必须使变址寄存器的内容实现有规律的变化(如自增1、自减1、乘比例系数)而不改变指令本身,从而使有效地址按变址寄存器的内容实现有规律的变化。
(9)块寻址方式
块寻址方式经常用在输入输出指令中,以实现外存储器或外围设备同内存之间的数据块传送。块寻址方式在内存中还可用于数据块移动。