当前位置: 首页 > news >正文

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

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
http://www.xdnf.cn/news/677233.html

相关文章:

  • 迪米特法则 (Law of Demeter, LoD)
  • 多个vue2工程共享node_modules
  • Liunx部署ES单机集群
  • Streamlit 项目知识点总结
  • OpenCv高阶(十三)——人脸检测
  • 第二章:软盘里的90年代
  • 力扣四道题,力扣LCR 016无重复字符的最长子串力扣452.用最小数量的箭引爆气球LCR026.重排链表力扣.1765地图中的最高点
  • 猿大师办公助手WebOffice用二进制数据流在Web前端打开Office文档
  • 如何使用 Redis 实现排行榜功能
  • 中车靶场,网络安全暑期实训营
  • [特殊字符]使用 Hyperlane 实现 WebSocket广播
  • MySql(四)
  • python-自定义导包问题ModuleNotFoundError: No module named
  • Linux 文件管理相关知识与命令
  • Linux升级内核回退到旧内核启动
  • Linux 进阶命令篇
  • 广东省省考备考(第二十二天5.27)—言语(第九节课)
  • Python正则表达式:30秒精通文本处理
  • 【判断含有相同数字rfind】2022-1-28
  • 高频面试--redis
  • [yolov11改进系列]基于yolov11引入分布移位卷积DSConv的python源码+训练源码
  • AI智能体策略FunctionCalling和ReAct有什么区别?
  • 多卡训练的开源大模型,开箱即用
  • Jenkins实践(8):服务器A通过SSH调用服务器B执行Python自动化脚本
  • WSL连接网络
  • 新太空原子钟任务为全球标准化测高系统铺平道路
  • 编译原理——语法制导的语义计算
  • 欢乐熊大话蓝牙知识11:如何打造一个低功耗蓝牙温湿度传感器?
  • getline()跳过输入
  • 01背包问题