1、读内存:Load
LDR R0,[R1,#4]; 读地址“R1+4”,得到的4字节数据存入R0。
2、写内存:Stroe
STR R0,[R1,#4]; 把R0的4字节数据写入地址“R1+4”。
3、加减
ADD R0,R1,R2; R0=R1+R2
ADD R0,R0,#1; R0=R0+1
SUB R0,R1,R2; R0=R1-R2
SUB R0,R0,#1; R0=R0-1
4、比较
CMP R0,R1; 结果保存在PSR(程序状态寄存器)
5、跳转
B main;Branch,直接跳转
BL main; Branch and Link,先把返回地址保存在LR寄存器里面再跳转
C函数的反汇编
c函数:
int add(volatile int a,volatile int b)
{
volatile int sum;
sum=a+b;
return sum;
}
让Keil生成反汇编
制造反汇编的指令如下:
fromelf --text -a -c --output=xxx.dis xxx.axf