ARM汇编指令介绍
1. 传输指令(mov)
将r1的值赋值给r0( r0 = r1)
- mov r0, r1
2. 取反传输指令(mvn)
将~r1的值赋值给r0( r0 = ~r1)
- mvn r0, r1
3. 运算指令(add、sub)
加法指令,将r0+r1的值赋值给r0,(r0 = r0 + r1)
- add r0, r1
减法指令,将r0-r1的值赋值给r0,(r0 = r0 - r1)
- sub r0, r1
4. 位操作指令(and、orr、eor、bic)
按位与指令, r0 = r1 & r2
- and r0, r1, r2
按位或指令, r0 = r1 | r2
- orr r0, r1, r2
按位异或, r0 = r1 ^ r2
- eor r0, r1, r2
位清除指令, r0 = r1 & (~r2)
- bic r0, r1, r2
5. 比较指令(cmp、cmn、tst、teq)
直接比较指令, r1 - r2, 根据结果改变cpsr寄存器标志位 z位
- cmp r1, r2
负数比较, r0 + r1 ==>r0 - (~r1)
- cmn r0 , r1
位测试, 判断 r1寄存器内的数值为1的那些位,r0对应的那些位是否为0
- tst r0, r1
测试相等 进行异或运算给据结果更改cpsr寄存器的值
- teq r0, r1
6. 跳转指令(b、bl)
短跳转,相对跳转。
不带返回的跳转,fun为标号。
- b fun
带返回的跳转,fun为标号。
- bl fun
长跳转,ldr
将0x12345678写入pc
- ldr pc, =0x12345678
7. 内存操作指令(ldr、str)
ldr从内存加载数据到寄存器
- ldr r0, [r1] ==== r0 = *r1
str保存寄存器的数值到内存地址
- str r0, [r1] ==== *r1 = r0