基址寻址与变址寻址

2018-1-4

1.基址寻址
(1)基址寻址需设有基址寄存器BR,其操作数的有效地址EA等于指令字中的形式地址A(偏移量)与基址寄存器中的地址(基地址)相加。
EA=A+(BR)
基址寄存器可以采用隐式或者显式两种。
隐式就是说我们使用专门的基址寄存器BR,用户不必显式指出该基址寄存器,只需要由指令的寻址特征位反映出基址寻址即可。
OP+寻址特征+A
显式是指在一组通用寄存器中,用户需要显式指出哪个寄存器作为我们的基址寄存器,存放基地址。
(2)基址寻址可以扩大我们的寻址范围,因为基址寄存器的位数可以大于形式地址A的位数。
(3)基址寻址在多道程序中极为有用。比如在汇编当中,我们有多个段,有时我们不必关心自己的程序位于哪一个位置,我们只需要给出基址寄存器,操作系统或者管理程序就可以根据主存空间状况,为我们指定的基址寄存器赋一个初值。

2.变址寻址
(2)变址寻址其有效地址EA等于指令字中的形式地址A与变址寄存器IX中的内容相加。
EA=A+(IX)
看上去好像和上面的那个差不多,实际上并非如此,基址寻址中的基址寄存器的内容通常由操作系统或者管理程序决定,在程序执行过程中是不可变的,而指令字中的A是可变的。变址寻址中变址寄存器的值是由用户设定的,在程序执行过程中是可变的,而指令字中的A是不可变的。
变址寻址特别适合编制循环程序。
比如我们要求出前100个数组元素的和:
如果我们用基址寻址的话,我们的偏移量是从指令中的形式地址得来的,那么如果我们要使偏移量不同,我们就要用不同的指令。这样看来我们就要写好多指令哦!但是如果我们用变址寻址的话,那么我们的偏移量是放在变址寄存器中的,那么我们无需改变指令,而只要改变寄存器中的值即可,因为我们的指令中存放的只是寄存器的编号而已,这样我们就大大缩短了我们指令的长度!

  • 26
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值