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

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

计算机组成原理总目录

数据寻址

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

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)默认作为操作数地址
    其中既可以使用一段主存空间作为堆栈空间,也可以使用寄存器作为堆栈空间
  • 如下:利用寄存器堆栈寻址完成一次加法操作
    在这里插入图片描述
  • 也可使用主存空间作为堆栈空间
    在这里插入图片描述

相关文章:

  • Springboot集成Mybatisplus,轻松CRUD
  • IDEA生成时序图和类图(案例超详解)
  • 笔试选择题-树
  • 用神经网络模拟3个距离为0的粒子
  • 【重识云原生】第六章容器6.1.10节——DockerFile解析
  • 20220910编译ITX-3588J的Buildroot的系统1(编译uboot)
  • 100 ECMAScript6数组方法
  • 循环神经网络
  • web安全常见漏洞 之CSRF
  • 【面试题 - mysql】进阶篇 - 分库分表
  • 中秋节——嫦娥奔月
  • 文件的上传下载
  • 数学建模学习(101):车辆路线规划问题
  • 为Ubuntu网页设置稳定的数据隧道
  • 通宵三天 我做了一个超级好玩的中秋节小游戏
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【391天】每日项目总结系列128(2018.03.03)
  • CentOS 7 修改主机名
  • CSS实用技巧
  • CSS相对定位
  • java 多线程基础, 我觉得还是有必要看看的
  • java概述
  • PHP面试之三:MySQL数据库
  • text-decoration与color属性
  • 成为一名优秀的Developer的书单
  • 技术发展面试
  • 用Visual Studio开发以太坊智能合约
  • #ifdef 的技巧用法
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • ()、[]、{}、(())、[[]]命令替换
  • (11)MSP430F5529 定时器B
  • (libusb) usb口自动刷新
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (第61天)多租户架构(CDB/PDB)
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (六)激光线扫描-三维重建
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)认识微服务
  • (一)为什么要选择C++
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • ***通过什么方式***网吧
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .Net 路由处理厉害了
  • .Net 知识杂记
  • @Conditional注解详解
  • @ResponseBody
  • [Angular] 笔记 6:ngStyle
  • [bzoj 3534][Sdoi2014] 重建
  • [BZOJ] 3262: 陌上花开
  • [bzoj1324]Exca王者之剑_最小割
  • [iOS]让Xcode 4.2生成的app支持老的iOS设备(armv6)
  • [Linux] PXE批量装机
  • [Nuget]使用Nuget管理工具包