基址寻址与变址寻址的区别

说到区别一般来讲都会有共同点。基址寻址与变址寻址都类似于相对寻址,它们的有效地址EA = 基址+指令字中形式地址A。

1、基址寻址

计算公式:EA = (BR) + A

有效地址是将CPU中基址寄存器BR的内容加上指令字中形式地址A。BR的内容由操作系统决定,在程序执行过程中BR的内容不可变,而形式地址是可变的。基址寻址方式适合解决动态定位的问题。在多道程序的环境当中,操作系统根据内存空间的情况赋值给BR,一旦赋值成功就不可更改,直至用户程序结束,使得用户不必关心实际的地址而只需要关心自己的地址空间即可。

2、变址寻址

计算公式:EA = (IX) + A

有效地址是将CPU中变址寄存器IX的内容加上指令字中有效地址A。其指令字的形式地址作为一个基准地址,内容不可变,而CPU中变址寄存器IX在程序执行过程中根据使用情况发生改变。这样的寻址方式非常适合于循环问题,原因在于指令的偏移量(形式地址)保持不变,使得执行循环时,只需要改变IX的内容即可。假若使用基址寻址的方式,意味着循环过程中不断需要新的偏移量,也就是需要更多的指令字加以控制。而变址寻址只需要一条指令即可完成相关操作,可以大量缩短指令编码的长度,提高指令字的可用性。

两种寻址方式都是解决特定应用场景的问题,它们本质上是一样的,只是表现形式的不同而已。

你可能感兴趣的:(计算机组成原理)