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