计算机组成原理_数据寻址

计算机组成原理总目录

数据寻址

数据寻址:定位指令的地址码所对应的物理地址

1. 寻址特征

数据寻址包括有多种方式,为了表明数据寻址的方式,通常在地址码中还包括一个字段【寻址特征】
在这里插入图片描述
包括二地址指令,每个地址码中都包含【寻址特征】
在这里插入图片描述

2. 数据寻址方式

  1. 直接寻址:顾名思义,形式地址A就是实际的物理地址
    在这里插入图片描述
  1. 间接寻址:形式地址不是实际的物理地址,而是存放【最终的物理地址】的地址
    (1)最终的物理地址我们常用EA来表示
    (2)其中不带括号的A或者EA都代表地址,而带括号的(A)和(EA)代表着对应地址内的数据
    在这里插入图片描述
    不仅如此,间接寻址还包括多级,就像A想要找E,但A只找到了B,B说你去找C,C说你去找D,最后通过D找到了E
    在这里插入图片描述
  1. 寄存器寻址:给出的地址A是CPU内的寄存器编号,即EA = Ri
    在这里插入图片描述
  1. 寄存器间接寻址:结合了寄存器寻址和间接寻址,最终地址存储在寄存器当中
    在这里插入图片描述
  1. 隐含寻址:用于一地址指令的操作数为两个的时候,另一个数据的地址是隐含的
    在这里插入图片描述
  1. 立即寻址:在立即寻址中,形式地址A就是所要找的数据,即A就是操作数本身(一般采用补码形式)
    在这里插入图片描述
  1. 基址寻址:将CPU内的基址寄存器内的数据(BR)加上形式地址A,得到最终地址EA = (BR) + A
  • 基址寻址中,既可以采用【专用的寄存器】作为【基址寄存器】,也可以采用【通用寄存器】作为【基址寄存器】
    在这里插入图片描述
    在这里插入图片描述
    优点:方便程序的浮动,方便实现多个程序的并发运行(多道程序),且基址寄存器是面向操作系统的,用户无法修改基址的数据
    (每个程序的起始地址不同,通过基址寻址能快速定位另一个程序的位置)
  1. 变址寻址:将CPU内的变址寄存器内的数据(IX)加上形式地址A,得到最终地址EA = (IX) + A
  • 在变址寻址中,既可以采用【专用的寄存器】作为【变址寄存器】,也可以采用【通用寄存器】作为【变址寄存器】

  • 变址寻址的寻址方式和基址寻址方式几乎完全相同,其不同点在于:
    (1)基址寄存器是面向操作系统的,用户(程序员)无法修改其基址寄存器的值,程序间浮动
    (2)变址寄存器是面向用户的,用户(程序员)可以修改编址寄存器的值作为程序内部寻址的偏移量,程序内浮动,适用于循环语句
    在这里插入图片描述

  1. 相对寻址:将程序计数器的数据(PC)和形式地址A相加,得到最终地址EA =(PC)+ A(其中A可正可负,用补码表示)
  • 显而易见,程序计数器记录的是指令的地址,和形式地址A相加后可以得到向前(正A)或者向后(负A)偏移的地址,适用于程序的循环语句,方便程序内部的浮动
    在这里插入图片描述
  1. 堆栈寻址:指令所要使用的操作数存储在一个堆栈结构中,栈顶指针(SP)默认作为操作数地址
    其中既可以使用一段主存空间作为堆栈空间,也可以使用寄存器作为堆栈空间
  • 如下:利用寄存器堆栈寻址完成一次加法操作
    在这里插入图片描述
  • 也可使用主存空间作为堆栈空间
    在这里插入图片描述
  • 8
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小-黯

免费的,尽力

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

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

打赏作者

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

抵扣说明:

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

余额充值