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

26-计组-寻址方式

指令寻址与PC自增

一、指令寻址方式

定义:寻找下一条将要执行的指令地址的过程。
核心部件:程序计数器(PC),用于指示待执行指令的地址。
执行流程

  1. CPU根据PC值从主存取指令。
  2. 取指后,PC自动自增,指向下一条指令。
  3. 跳转指令会修改PC为目标地址,打破顺序执行。

1. PC自增规则

PC自增取决于主存编址方式指令字长

  • 按字节编址
    • 指令字长=1字节:PC = PC + 1
    • 指令字长=4字节:PC = PC + 4
  • 按字编址(假设字长=4字节):
    • 指令字长=4字节:PC = PC + 1(以字为单位)

  • 关键点:PC自增在取指阶段完成后执行,确保指向下一条指令。

2. 跳转指令

  • 特点:PC不按顺序自增,而是修改为跳转目标地址。
  • 示例:当前PC=100,指令为“跳转到当前地址+3”,PC改为103。
  • 常用寻址:相对寻址,EA = (PC) + A(PC已自增,A为相对位移量)。
    • 8位补码A的寻址范围:(PC) - 128 ~ (PC) + 127
  • 执行流程
    1. 取指:从PC地址读取跳转指令。
    2. PC自增:按指令字长自增。
    3. 计算目标地址(EA):根据寻址方式(如相对寻址)。
    4. 修改PC:PC = EA,下一条指令从EA取指。


二、数据寻址方式

定义:寻找指令中操作数的真实地址(有效地址EA)。
指令格式:|操作码OP|寻址特征|形式地址A|
核心:形式地址A不一定是EA,需通过寻址特征转换。

1. 立即寻址

  • 特点:A为操作数本身(立即数,补码形式)。
  • 优点:无需访存,速度快。
  • 缺点:A位数限制立即数范围。
  • 格式:|OP|立即寻址特征|立即数A|

2. 直接寻址

  • 特点:A即EA(EA=A)。
  • 优点:简单,执行阶段只需访存一次。
  • 缺点:A位数限制寻址范围,修改地址需改A。
  • 格式:|OP|直接寻址特征|A|

3. 隐含寻址

  • 特点:操作数地址隐含在操作码或寄存器(如ACC)中。
  • 优点:缩短指令字长。
  • 缺点:需额外硬件存储隐含地址。
  • 示例:一地址加法指令,ACC作为第二操作数。

4. 间接寻址

  • 特点:A指向操作数地址的地址。
    • 一次间接:A → 主存 → EA → 操作数
    • 二次间接:A → 主存 → 中间地址 → EA → 操作数
  • 优点:扩大寻址范围(EA位数 > A位数)。
  • 缺点:多次访存,效率低。

5. 寄存器寻址

  • 特点:A为寄存器编号,操作数在寄存器中(EA=Ri)。
  • 优点:无需访存,速度快。
  • 缺点:寄存器资源有限且昂贵。
  • 格式:|OP|寄存器寻址特征|Ri|

6. 寄存器间接寻址

  • 特点:寄存器Ri存储操作数的主存地址(EA=(Ri))。
  • 优点:比间接寻址少一次访存。
  • 执行:访问Ri取地址,再访存取操作数。
  • 格式:|OP|寄存器间接寻址特征|Ri|

7. 基址寻址

  • 特点:EA = A + (BR),BR为基址寄存器。
  • 关键
    • BR由OS管理,用户不可修改。
    • 支持多道程序设计和内存保护。
    • 程序可浮动(通过修改BR)。
  • 分类
    • 隐式:专用BR寄存器。
    • 显式:通用寄存器指定。

8. 变址寻址

  • 特点:EA = A + (IX),IX为变址寄存器。
  • 与基址寻址区别
    • IX用户可修改,A固定。
    • BR由OS管理,A用户可修改。
  • 应用:数组处理,A为数组首地址,IX修改访问不同元素。

9. 相对寻址

  • 特点:EA = (PC) + A,PC为下一条指令地址(已自增)。
  • 应用:转移指令,A为相对位移量(补码)。
  • 寻址范围(8位A):(PC) - 128 ~ (PC) + 127
  • 格式:|OP|相对寻址特征|A|


三、总结

  • PC自增:按指令字长和编址方式(PC+1或PC+n)。
  • 跳转指令:修改PC为目标地址,常用相对寻址(EA=(PC)+A)。
  • 寻址方式
    1. 立即:操作数在指令中。
    2. 直接:A为操作数地址。
    3. 隐含:地址隐含在操作码/寄存器。
    4. 间接:A为地址的地址。
    5. 寄存器:操作数在寄存器。
    6. 寄存器间接:寄存器存操作数地址。
    7. 基址:EA=A+(BR),OS管理BR。
    8. 变址:EA=A+(IX),用户改IX。
    9. 相对:EA=(PC)+A,PC已自增。

示例分析

假设:

  • 按字节编址,指令字长=4字节,当前PC=100。
  • 跳转指令(相对寻址),A=3。
  1. 取指:读取PC=100的指令。
  2. PC自增:PC = 100 + 4 = 104。
  3. 计算EA:EA = 104 + 3 = 107。
  4. 修改PC:PC = 107,下一指令从107取。
http://www.xdnf.cn/news/1110655.html

相关文章:

  • Git企业级开发(最终篇)
  • 手把手教你用YOLOv10打造智能垃圾检测系统
  • SpringBootloggers未授权访问漏洞处理
  • Java使用Langchai4j接入AI大模型的简单使用(四)--整合Springboot
  • 12.使用VGG网络进行Fashion-Mnist分类
  • 让 VSCode 调试器像 PyCharm 一样显示 Tensor Shape、变量形状、变量长度、维度信息
  • CSS flex
  • 安卓定制功能
  • 外设数据到昇腾310推理卡 之二dma_alloc_attrs
  • Linux系统编程——目录 IO
  • 理解小数的计算机表达
  • PyTorch神经网络实战:从零构建图像分类模型
  • 脉冲神经网络膜电位泄漏系数学习:开启时空动态特征提取的新篇章
  • 复现永恒之蓝
  • Linux - 安全排查 3
  • 飞算JavaAI:重新定义Java开发效率的智能引擎
  • python-for循环
  • 【TA/Unity】Shader基础结构
  • 强化学习、PPO和GRPO的通俗讲解
  • 创客匠人:解析创始人 IP 打造对知识变现的深层赋能
  • os.machine()详解
  • vue3 el-table动态表头
  • 菜鸟的C#学习(二)
  • TDengine 使用最佳实践(1)
  • hot100链表(1)
  • 工业软件出海的ERP-PLM-MES一体化解决方案
  • 自动化运维工具jenkins问题
  • AI 时代的分布式多模态数据处理实践:我的 ODPS 实践之旅、思考与展望
  • 单细胞分析教程 | (二)标准化、特征选择、降为、聚类及可视化
  • 牛客网50题