基址寻址和变址寻址都是偏移寻址的一种方式,而这两者又非常类似,那么这两者有什么不同呢?

基址寻址

这种寻址方式下,是由基址寄存器(BR)中的基地址+指令中的形式地址=实际有效地址,其中基地址不变,改变的是形式地址中的值,作为偏移量。

基址寻址的好处是可以扩大寻址范围,这里的范围并不是可以访问的大小,而是指可以访问到的范围,比如指令中形式地址只能表示(0~9)的范围,这是一个非常靠前的位置,这时我给基址寄存器加上一个100的基地址,那么寻址的范围就变成了(100~109),可访问到的范围更”远“了。

基址寻址主要面向系统,主要用于程序的重定位,扩展寻址范围等等。

变址寻址

这种方式下,是由变址寄存器(IX)中的地址+指令中的形式地址=实际的有效地址,其中变址寄存器中的内容可以改变,作为偏移量,而形式地址保持不变。

变址寻址常用在一些比较有规律的操作上,比如数组的遍历等,拿for循环举例子,假设每次的增量为1,我不需要改变形式地址,而只需要修改变址地址,让变址寄存器从0开始,就可以完成遍历。

变址寻址主要面向用户,主要解决程序循环问题。