欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 上位机知识篇---寻址方式

上位机知识篇---寻址方式

2025/4/27 6:03:29 来源:https://blog.csdn.net/2301_79556402/article/details/147545245  浏览:    关键词:上位机知识篇---寻址方式

文章目录

  • 前言


前言

本文简单介绍了各种寻址方式。在计算机体系结构和指令集设计中,寻址方法(Addressing Mode)是指 CPU 指令如何访问操作数(数据)的方式。不同的寻址方法会影响指令的灵活性、执行效率和编程便利性。以下是常见的寻址方式及其特点:


  1. 立即寻址(Immediate Addressing)
    操作数直接包含在指令中,无需访问内存。

特点:速度快,但数据大小受限(如 8/16/32 位立即数)。

示例:

assembly
MOV R1, #42 ; R1 = 42(立即数42直接存入寄存器R1)
2. 寄存器寻址(Register Addressing)
操作数存放在CPU寄存器中,指令直接访问寄存器。

特点:速度最快(无需访存),但寄存器数量有限。

示例:

assembly
ADD R2, R1, R3 ; R2 = R1 + R3(R1和R3是寄存器)
3. 直接寻址(Direct Addressing / Absolute Addressing)
指令中直接给出操作数的内存地址。

特点:访问固定内存位置,但地址编码可能较长。

示例:

assembly
MOV R1, [0x1000] ; R1 = 内存地址0x1000处的值
4. 寄存器间接寻址(Register Indirect Addressing)
操作数的地址存放在寄存器中,指令通过寄存器间接访问内存。

特点:灵活(可动态计算地址),但需额外访存。

示例:

assembly
MOV R1, [R2] ; R1 = 内存地址(R2的值)处的数据
5. 基址寻址(Base Addressing)
操作数地址 = 基址寄存器 + 偏移量(常量或寄存器)。

特点:适用于数组、结构体访问(如 array[i])。

示例:

assembly
MOV R1, [R2 + 4] ; R1 = 内存地址(R2 + 4)处的数据
6. 变址寻址(Indexed Addressing)
操作数地址 = 基址 + 变址寄存器 × 比例因子。

特点:适合遍历数组(如 array[i] 其中 i 可变)。

示例:

assembly
MOV R1, [R2 + R3*2] ; R1 = 内存地址(R2 + R3×2)处的数据
7. 相对寻址(Relative Addressing / PC-Relative)
操作数地址 = 当前PC(程序计数器) + 偏移量。

特点:用于跳转指令(如 JMP、CALL),实现位置无关代码(PIC)。

示例:

assembly
JMP +0x20 ; 跳转到当前指令地址 + 0x20
8. 堆栈寻址(Stack Addressing)
操作数通过堆栈指针(SP)隐式访问(如 PUSH/POP)。

特点:用于函数调用、局部变量存储。

示例:

assembly
PUSH R1 ; 将R1压入堆栈(SP -= 4,[SP] = R1)
POP R2 ; 从堆栈弹出到R2(R2 = [SP],SP += 4)
9. 隐含寻址(Implied Addressing)
操作数由指令本身隐含指定(无显式地址字段)。

特点:指令简短,但灵活性低。

示例:

assembly
CLC ; 清除进位标志(隐含操作CF=0)
10. 间接寻址(Indirect Addressing)
操作数的地址存储在另一个内存位置(多级指针)。

特点:支持动态内存访问(如指针解引用),但效率较低。

示例:

assembly
MOV R1, [[0x1000]] ; R1 = 内存地址(内存地址0x1000处的值)处的数据
不同架构的寻址方式差异
x86:支持复杂寻址(如 [eax + ebx*4 + 0x10])。

ARM:主要使用基址+偏移或寄存器间接寻址。

RISC-V:简化寻址模式(仅支持基址+立即数偏移)。

总结
寻址方式 特点 典型应用场景
立即寻址 操作数在指令中 常量赋值(MOV R1, 5)
寄存器寻址 操作数在寄存器 算术运算(ADD R1, R2)
直接寻址 操作数在固定内存地址 全局变量访问
寄存器间接寻址 操作数地址在寄存器 指针解引用(MOV R1, [R2])
基址/变址寻址 基址 + 偏移量 数组/结构体访问
相对寻址 PC + 偏移量 跳转指令(JMP +0x10)
堆栈寻址 通过SP隐式访问 函数调用(PUSH/POP)
理解寻址方式对编写高效汇编代码和优化程序性能至关重要。


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词