【ARM 汇编&ARM 指令集】ARM 汇编&ARM 指令集  学习笔记

ARM 处理器寻址方式

1、寄存器寻址

操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值操作

MOV R1,R2 ;R2 -> R1
SUB R0,R1,R2 ;R1 - R2 -> R0

2、立即寻址

地址码部分就是操作数,(操作数)立即数就在指令中

SUBS R0,R0,#1 ;R0 – 1 -> R0
MOV R0,#0xff00 ;0xff00 -> R0

3、寄存器偏移寻址

MOV R0,R2,LSL #3 ;R2 的值左移3 位,结果放入R0,即R0 = R2 * 8
ANDS R1,R1,R2,LSL R3 ;R2 的值左移R3 位,然后和R1 相与操作,结果放入R1

4、寄存器间接寻址

寄存器为操作数的地址指针

LDR R1,[R2] ;将R2 中的数值作为地址,取出此地址中的数据保存在R1 中
SWP R1,R1,[R2];将如中的数值作为地址,取出此地址中的数值与R1 中的值交换

5、基址寻址

将基址寄存器的内容与偏移量相加,形成操作数的有效地址,用于访问寄存器附近存储单元

LDR R2,[R3,#0x0F] ;将R3 中的数值加0x0F 作为地址,取出此地址的数值保存在R2 中
STR R1,[R0,#-2] ;将R0 中的数值减2 作为地址,把R1 中的内容保存到此地址位置

6、多寄存器寻址

多寄存器寻址就是一次可以传送几个寄存器值,允许一条指令传送 16 个寄存器的任何子集或所有寄存器。

LDMIA R1!,{R2-R7,R12} ;将R1 单元中的数据读出到R2-R7,R12,R1 自动加1
STMIA R0!,{R3-R6,R10};将R3-R6,R10 中的数据保存到R0 指向的地址,R0 自动加1

7、堆栈寻址

堆栈是特定顺序进行存取的存储区,操作顺序分为“后进先出”和“先进后出”,
堆栈寻址时隐含的,它使

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值