操作数寻址方式
1、寄存器寻址
- 指令实例: Add R4,R2
- 含义: Regs[R4]<——Regs[R4]+Regs[R3]
2、立即数寻址
- 指令实例: Add R4,#3
- 含义: Regs[R4]<——Regs[R4]+3
注:立即数不需要访问寄存器,速度快
3、偏移寻址
- 指令实例: Add R4,100(R1)
- 含义: Regs[R4]<——Regs[R4]+Mem[100+Regs[R1]]
4、寄存器间接寻址
- 指令实例: Add R4,(R1)
- 含义: Regs[R4]<——Regs[R4]+Mem[Regs[R1]]
5、索引寻址(基址变址寻址)
- 指令实例: Add R3,(R1+R2)
- 含义: Regs[R3]<——Regs[R3]+Mem[Regs[R1]+Regs[R2]]
6、直接寻址或绝对寻址
- 指令实例: Add R4,(1001)
- 含义: Regs[R4]<——Regs[R4]+Mem[1001]
7、存储器间接寻址
- 指令实例: Add R1,@(R3)
- 含义: Regs[R1]<——Regs[R1]+Mem[Mem[Regs[3]]]
注:取操作数需要访问一次寄存器和两次存储器
8、自增寻址
-
指令实例: Add R1,(R2)+
-
含义:
Regs[R1]<——Regs[R1]+Mem[Regs[R2]]
Regs[R2]<——Regs[R2]+d
9、自减寻址
- 与自增寻址相反,先进行R2地址自减,再进行操作
10、缩放寻址
- 引入移位运算和加法运算,较复杂
以上总结:现在普遍采用偏移寻址、立即数寻址、寄存器间接寻址等