ARM指令集--ADD SUB LDR STM LDM STM LDIA STMDB

ADD

add r0,r1,#4          //r0 = r1 + 4

SUB

sub r0,r1,#4          //r0 = r1 - 4
sub r0,r1,r2          //r0 = r1 - r2

在这里插入图片描述

LDR

LDR 寄存器 ⬅内存

LDR     R0,=0x50000050    // r0 = 0x50000050
LDR     R1,=0xE0000000  ;R1=0xE0000000
LDR     R1,0xE0000000   ;将内存中地址为0xE0000000的内容载入到R1
LDR     R1,[R0]         ;将R0中的数所指定的地址的内容传输到R1

STR

STR 寄存器 ➡内存

STR     R1,[R0]     ;将R1中的内容传输到R0中的数所指定的地址的内存中去

LDM

读内存,写入多个寄存器

STM

把多个寄存器写入内存

LDIA

看上图理解

ldmia sp,{fp,ip,pc}
/*
		假设sp=4080
		1.先读fp = 4080~4083的值
		2.sp = 4080 + 4 = 4084
		3.先读ip = 4084~4087的值
		4.ip = 4084 + 4 = 4088
		5.先读pc = 4087~4091的值
		6.pc = 4088 + 4 = 4092
		注:fp,ip,pc 高编号存放高地址(fp(R11),ip(R12),pc(R15))
		   SP后无感叹号,所以sp仍然为4080
*/

STMDB

stmdb sp!,{fp,ip,pc}
/*
		假设sp=4096
		1.先减sp = sp - 4 = 4092的值
		2.再存:地址4092存pc的值
		3.先减sp = sp - 4 = 4088的值
		4.再存:地址4088存ip的值
		5.先减sp = sp - 4 = 4084的值
		6..再存:地址4084存fp的值
		注:fp,ip,pc 高编号存放高地址(fp(R11),ip(R12),pc(R15))
		   SP后有感叹号,所以sp=4084
*/

注:ia 先存后加 db先减后存

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值