指令寻址方式(立即、直接、间接、变址等)

适合读者:软考中级备考同学

阅读时间:3.5分钟

内容:常见寻址方式、特点、对比、例题


1. 什么是寻址方式?

指令中需要指明操作数在哪里。寻址方式就是确定操作数地址的方法。不同的寻址方式影响指令的长度、执行速度和编程灵活性。

软考中常考查各种寻址方式的定义、特点以及它们之间的区别。


2. 常见寻址方式一览

寻址方式 操作数所在位置 指令中给出内容
立即寻址 指令本身 操作数值
直接寻址 内存单元 内存地址
间接寻址 内存单元(地址由指令指向的单元再指向) 地址的地址
寄存器寻址 寄存器 寄存器编号
寄存器间接寻址 内存单元(地址在寄存器中) 寄存器编号
变址寻址 内存单元(基址+变址) 基址/变址寄存器编号 + 偏移量
相对寻址 内存单元(PC + 偏移量) 偏移量

下面逐一说明。


3. 详细解释

3.1 立即寻址

  • 特点:操作数直接写在指令中
  • 优点:不需要访问内存获取操作数,速度快
  • 缺点:操作数是固定的,无法动态改变;数值范围受指令字段长度限制
  • 示例ADD R0, #5 表示将 R0 的值加上立即数 5

3.2 直接寻址

  • 特点:指令中给出操作数的内存地址
  • 优点:只需一次内存访问即可得到操作数
  • 缺点:地址字段长度限制了寻址范围
  • 示例LOAD R0, 1000 表示将内存地址 1000 中的值加载到 R0

3.3 间接寻址

  • 特点:指令中给出的地址单元里存放的是操作数的真正地址(地址的地址)
  • 优点:可访问更大的地址空间(因为地址可以放在多个字中)
  • 缺点:需要两次内存访问,速度慢
  • 示例:指令给出地址 A,内存 A 处存放地址 B,实际操作数在地址 B 中

3.4 寄存器寻址

  • 特点:操作数在寄存器中
  • 优点:速度快(寄存器访问远快于内存),指令短
  • 缺点:寄存器数量有限
  • 示例ADD R0, R1 表示将 R0 与 R1 的值相加

3.5 寄存器间接寻址

  • 特点:指令给出寄存器编号,该寄存器中存放操作数的内存地址
  • 优点:地址可动态修改(改变寄存器的值即可),比间接寻址快(只有一次内存访问)
  • 示例LOAD R0, (R1) 表示以 R1 的内容作为内存地址,取出该地址的值存入 R0

3.6 变址寻址

  • 特点:有效地址 = 基址(存放在基址寄存器或指令中) + 变址(存放在变址寄存器中)
  • 优点:适合数组访问、循环操作(只需修改变址寄存器即可遍历数组)
  • 常见变种:基址寻址(与变址类似,但变址通常用于偏移,基址用于起始地址)
  • 示例LOAD R0, 100(R1) 表示有效地址 = 100 + R1 的内容

3.7 相对寻址

  • 特点:有效地址 = 程序计数器 PC + 偏移量(偏移量通常由指令给出)
  • 优点:实现程序浮动(代码在内存中移动仍能正确跳转)
  • 用途:主要用于转移指令(条件跳转、无条件跳转)
  • 示例BEQ 8 表示如果相等,则跳转到 PC + 8 的位置

4. 对比总结表

寻址方式 地址计算 访问内存次数 速度 编程灵活性
立即 无(操作数在指令中) 0 最快
直接 地址 = 指令中的地址 1
间接 地址 = 指令中的地址 2
寄存器 操作数在寄存器中 0 最快
寄存器间接 地址 = 寄存器内容 1
变址 地址 = 基址 + 变址 1 高(适合数组)
相对 地址 = PC + 偏移量 1 中(适合跳转)

访问内存次数指获取操作数所需的额外内存访问(指令本身不算)。


5. 典型考题与例题

题目1 :指令 MOV R0, #100 中,操作数 100 的寻址方式是( )。

A. 立即寻址 B. 直接寻址 C. 寄存器寻址 D. 变址寻址

答案 :A(立即寻址的标志是 # 或直接写数值)


题目2 :若指令中给出的是操作数所在的寄存器编号,这种寻址方式称为( )。

A. 直接寻址 B. 寄存器寻址 C. 寄存器间接寻址 D. 立即寻址

答案:B


题目3 :在变址寻址中,有效地址是通过( )计算得到的。

A. 指令中的地址码 B. 基址寄存器内容 + 变址寄存器内容

C. 程序计数器 + 偏移量 D. 指令中的地址码 + 变址寄存器内容

答案:D(有些教材定义变址为"指令中的地址 + 变址寄存器",基址寻址则用基址寄存器)

注意:不同教材对"变址"和"基址"的称谓可能略有区别,软考通常认为变址寻址中指令给出一个基值(或基址寄存器),再加上变址寄存器。遇到具体题目按照常用定义判断。


题目4 :相对寻址通常用于( )。

A. 数据存取 B. 数组访问 C. 程序跳转 D. 堆栈操作

答案:C


6. 记忆口诀

立即数就在指令中,直接地址直接访存。
间接再访一次存,寄存器最快不用等。
寄存器间接先找址,变址基址加变址。
相对寻址 PC 加偏移,跳转浮动最相宜。


7. 给备考同学的一句话

寻址方式是软考选择题的常客。记住:

  • 看到 # 或直接写数值 → 立即寻址
  • 看到寄存器号且操作数就在该寄存器 → 寄存器寻址
  • 看到寄存器号且需要访问内存 → 寄存器间接寻址(因为寄存器里是地址)
  • 看到 PC + 偏移量 → 相对寻址(通常出现在跳转指令中)
  • 看到基址/变址寄存器相加 → 变址或基址寻址

多做几道题就能区分清楚。


🔔 本专栏日更2篇,点击头像 → 专栏《软考中级高频考点》订阅

📥 需要"计算机系统知识"完整思维导图?私信回复"软考计算机"免费获取

#软考中级 #软件设计师 #指令寻址方式 #计算机系统知识

相关推荐
Shingmc32 小时前
【Linux】多路转接之epoll
linux·运维·服务器·开发语言·网络
在学了加油2 小时前
Inception v1学习笔记
笔记·python·学习
久邦科技2 小时前
爪云主机深度测评:2026年免备案海外主机的硬件配置与性能实测
网络
jimmyleeee2 小时前
人工智能基础知识笔记四十一:Claude 成本节约完全指南:从计费机制到工具实战
人工智能·笔记
garmin Chen2 小时前
Elasticsearch(1):Elasticsearch核心原理与基础操作总结
java·大数据·笔记·elasticsearch·搜索引擎·全文检索
晓梦林2 小时前
EVA靶场学习笔记
android·笔记·学习
humors2212 小时前
聊聊密码为啥会“白设”
大数据·运维·服务器·网络·网络安全
ZzYH222 小时前
文献阅读 260529-Burning Questions: Research Data, Tools, and Insights
笔记
玖玥拾2 小时前
C/C++ 基础笔记(一)
c语言·c++·笔记