计算机系统(6)

◆指令寻址方式:

顺序寻址方式:执行一段程序时,是一条指令接着一条指令的顺序执行。

**跳跃寻址方式:**下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出。程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。

◆指令操作数的寻址方式

1. 立即寻址(Immediate Addressing)

  • 定义 :操作数直接包含在指令中(即立即数)。

  • 格式MOV R1, #10(将常数 10 存入寄存器 R1)

  • 特点

    • 速度快(无需访存)。

    • 但操作数大小受限(如 8/16/32 位立即数)。

  • 适用场景:初始化寄存器、短常数运算。


2. 寄存器寻址(Register Addressing)

  • 定义:操作数在 CPU 寄存器中。

  • 格式ADD R1, R2(R1 = R1 + R2)

  • 特点

    • 速度最快(直接访问寄存器)。

    • 寄存器数量有限(如 x86 有 16 个通用寄存器)。

  • 适用场景:高频数据运算。


3. 直接寻址(Direct Addressing)

  • 定义:指令直接给出操作数的内存地址。

  • 格式MOV R1, [0x1000](将内存地址 0x1000 的数据加载到 R1)

  • 特点

    • 需要访存,速度较慢。

    • 地址范围受限(取决于指令编码位数)。

  • 适用场景:访问固定内存位置(如全局变量)。


4. 寄存器间接寻址(Register Indirect Addressing)

  • 定义:寄存器中存储的是操作数的内存地址。

  • 格式MOV R1, [R2](R2 存放地址,读取该地址的数据到 R1)

  • 特点

    • 比直接寻址灵活(地址可动态计算)。

    • 仍需访存,速度较慢。

  • 适用场景:指针操作、数组遍历。

5. 基址寻址(Base Addressing)

  • 定义:操作数地址 = 基址寄存器 + 偏移量。

  • 格式MOV R1, [R2 + 0x10](R2 是基址,0x10 是偏移量)

  • 特点

    • 适用于数组、结构体访问。

    • 需额外计算地址。

  • 定义:操作数地址 = PC(程序计数器) + 偏移量。

  • 格式JMP +0x20(跳转到当前指令地址 + 0x20)

  • 特点

    • 用于分支/跳转指令。

    • 支持位置无关代码(PIC)。