arm 指令的寻址方式

1、立即寻址   操作数在指令中直接给出

ADD R0R0,#1 R0←R01
ADD R0
R0,#0x3f R0←R00x3f

2、寄存器寻址   操作数在寄存器

ADD R0R1R2 R0←R1R2

3、寄存器间接寻址操作数的地址在寄存器

ADD R0R1[R2] R0←R1[R2]
LDR R0
[R1]
R0←[R1]
STR R0
[R1] [R1]←R0

4、基址变址寻址   操作数地址 = 基址寄存器 + 指令中给出的地址偏移

LDR R0[R1,#4] R0←[R14]
LDR R0
[R1,#4]! ;R0←[R14]R1←R1
4
LDR R0
[R1] ,#4 R0←[R1]R1←R1
4
LDR R0
[R1R2] R0←[R1R2]

5、多寄存器寻址   类似寄存器寻址,此处是多个寄存器而已

LDMIA R0{R1R2R3R4} R1←[R0]
    
R2←[R0
4]
    
R3←[R0
8]
    
R4←[R012]

6、相对寻址   目标地址 = pc 当前值 + 指令给出的标号偏移地址

BL NEXT ;跳转到子程序NEXT 处执行
......
NEXT
......
MOV PC
LR ;从子程序返回

7、堆栈寻址

arm
微处理器支持这四种类型的堆栈工作方式。

满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。
满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。
空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。
空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值