计算机组成原理——指令的寻址方式

4.2 指令的寻址方式

出自up主Beokayy传送门

1. 指令寻址和数据寻址

指令寻址

  • 顺序寻址
    • 通过PC+“1”,自动形成下一条指令的地址。
  • 跳跃寻址
    • 通过转移类指令实现,由指令给出下条指令地址的计算方式。
    • 跳跃的结果是当前指令修改PC值,所以下一条指令的地址仍然通过PC给出。

数据寻址

操作码寻址特征形式地址A
  • 如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或怎样计算出操作数的地址。

2.常见的数据寻址方式

隐含寻址

  • 不明显给出操作数的地址,而在指令中隐含。
    隐含寻址

立即寻址

  • 指令的地址字段指出的不是操作数的地址,而是操作数本身,又称为立即数。
    立即寻址

直接寻址

  • 指令字中的形式地址A是操作数的真实地址EA
    直接寻址

间接寻址

  • 指令的地址字段给出的形式是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA=(A)。
    间接寻址

寄存器寻址

  • 指令字中直接给出操作数所在的寄存器编号,即EA=Ri,其操作数在由Ri所指的寄存器内。
    寄存器寻址

寄存器间接寻址

  • 指令的地址字段给出的形式地址是换做数所在主存单元的地址,即EA=(Ri)。
    在这里插入图片描述

相对寻址

  • PC取指自增后的内容加上形式地址A而形成操作数的有效地址,即 ( P C ) + 1 → P C (PC) + 1 \to PC (PC)+1PC E A = ( P C ) + A EA = (PC) + A EA=(PC)+A
  • A是相对于PC值的偏移量,可正可负,由补码表示。
  • 多道程序中重要的寻址方式,便于程序浮动。
    相对寻址

基址寻址

  • 将CPU中基址寄存器BR的内容加上指令格式中的形式地址A而形成操作数的有效地址,即 E A = ( B R ) + A EA = (BR) + A EA=(BR)+A
  • 基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量 )。
  • 基址寄存器既可以采用专用寄存器,也可以采用通用寄存器。
  • 有利于多道程序设计,并可用于编制浮动程序。
    在这里插入图片描述

变址寻址

  • 有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容之和。即 E A = ( I X ) + A EA = (IX) + A EA=(IX)+A
  • 面向用户,变址寄存器的内容可由用户改变(作为偏移量),形式地址不变(作为基地址)。
  • 适合编制循环程序以及处理数组问题。
    在这里插入图片描述

堆栈寻址

  • 堆栈是存储器(或专用寄存器组)中一块特定的、按后进先出原则管理的存储区,该存储区中读写单元的地址由一个特定的寄存器堆栈指针SP给出。
  • 堆栈可分为硬堆栈和软堆栈:
    • 硬堆栈:寄存器堆栈,成本较高,不适合做大容量的堆栈。
    • 软堆栈:从主存中划出一段区域来做堆栈,是最划算且最常用的方法。

总结

寻址方式有效地址访存次数
隐含寻址程序指定0
立即寻址A即是操作数0
直接寻址EA=A1
一次间接寻址EA=(A)2
寄存器寻址EA=Ri0
寄存器间接一次寻址EA=(Ri)1
相对寻址(PC) +1→PC
EA=(PC) +A
1
基址寻址EA=(BR) +A1
变址寻址EA=(IX) +A1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盐可颂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值