ARM彙編指令集2

2021-07-22 03:24:52 字數 1228 閱讀 5264

常用arm指令1:資料處理指令

資料傳輸指令:

mov

mov r1,r2

mov r1,#0xff01

mvnmvn和mov用法是一樣的,區別是mov是原封不動的傳遞,而mvn是按位取反後傳遞

如r1=0xff,然後mov r0,r1後,r0=0xff,

但 mvn r0,r1時,r0=0xffffff00.

算術運算指令

略邏輯指令

and 邏輯與

or 邏輯或

eor 邏輯異或

bic 位清除指令  bic r0,r1,#0x1f將r1中的數的bit0到bit4清零後賦值給r0

比較指令:比較過程中總是會影響cpsr的標誌位

cmp        cmpr0 r1 等價於sub r2,r0,r1(r2=r0-r1)

cmn    cmn r0 r1 等價於add r0,r1

tst    tst r0,#0xc 比較bit3,bit2是否全為0。作測試位

teq        測試等價,不相等為1,相等為0

比較指令用來比較2個暫存器中的數    注意:比較指令不用後面加s字尾就可以影響cpsr中的標誌位。

常用arm指令2: cpsr訪問指令  mrs & msr

cpsr和spsr的區別和聯絡:cpsr是程式狀態暫存器,整個soc只有乙個;而spsr有5個,分別在5中異常模式下,作用是當從普通模式進入異常模式時,用來儲存之前普通模式下的cpsr的,以在返回普通模式時,恢復原來的cpsr。

mrs(mov register,source)用來讀psr,msr用來寫psr。   

常用arm指令3:跳轉(分支)指令

b: 直接跳轉;(就沒打算返回)

bx:跳轉同時切換到arm模式,一般用於異常處理的跳轉。

常用arm指令4:訪存指令

ldr/str & ldm/stm&swp

單個字/半字/位元組訪問 ldr/str

多字批量訪問  ldm/stm

swap r1, r2,[r0] : 把[r0]記憶體裡的內容寫到r1,而把r2內容寫到[r0]位址中。

swp r1,r1,[r0]:將 [r0]位址的內容 與 r1 暫存器的內容互換。

合法立即數: 0x000000ff  0xf000000f

非法立即數: 0x000001ff

軟中斷指令 swi(software interrupt):軟終端指令用來實現作業系統中的系統呼叫

ARM彙編指令集

arm彙編指令集的介紹,包括指令和偽指令。指令指的是cpu機器指令的助記符,是由cpu的指令集提供的,經過編譯之後,會以二進位制機器碼的形式由cpu讀取執行 偽指令本質上不是指令,和cpu的機器指令沒有任何關係,只是和指令一起寫在 中而已,是由編譯器環境提供的,其目的是用於指導編譯過程,偽指令經過編...

常用arm彙編指令 RISC指令集

ldr r0,r1 讀記憶體,r0等於r1所指向位址的值,相當於c語言r0 r1 str r0,r1 寫記憶體,把r0的值存放到r1所指向的位址中,相當於c語言 r1 r0 ldr r1,r2,4 基址變址定址,相當於c語言r1 r2 4 ldr r0,0x12345678 偽指令,編譯最終拆分為幾...

彙編指令集

1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓入堆疊.popa 把di,si,bp,sp,bx,dx,cx,ax依次彈...