-
数据处理指令
- 数据传输指令mov/mvn
mov数据传递指令 mov既可寄存器与寄存器之间进行数据传递,也可将立即数赋值给寄存器
mvn数据按位取反后传递 - 算数指令 add sub rsb adc rsc
(反向带进位减法)
关键单词 carry 进位 subtraction add
sub r2 r0 r1 r0-r1的值赋给r2 - 逻辑指令 and/orr/eor/bic
与/或/非/位清除 - 比较指令 cmp/cmn/tst/teq
比较指令不需要加后缀S就能影响cpsr寄存器
cmp r0 r1 等价于判断两者相减是否为0,结果由cpsr寄存器的z位提供
cmn 取反比较
tst 测试井号后数字指的位数是否全为0,对两个数进行位与
teq 对两个数进行异或 - 乘法指令 mvl/mla/umull/umlal/smull/smlal
- 前导零指令 clz
- 数据传输指令mov/mvn
-
cpsr指令
除比较指令外,其他指令访问cpsr程序状态寄存器必须使用下面的指令
msr 写psr (cpsr/spsr) mrs读psr
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
//或者可以用下面一句替代上面四句
msr cpsr_c,#0xd3
-
分支跳转指令
b 跳转后不返回
bl (branch and link)跳转后返回 lr
bx 跳转同时切换到arm模式 -
访存指令
ldr/str 单字节访存指令
ldm/stm 多字节访存指令
swp 交换指令,直接将寄存器的数据与内存中的数据交换swp r0 ,r1 ,[r3]
-
软中断指令
swi(software interrupt)软件中断 -
合法立即数与非法立即数