arm彙編指令

2021-08-21 16:41:45 字數 1883 閱讀 2965

加法指令  add     r1,r2,r3         r1= r2+r3;

帶進製加法 adc  r1,r2,r3               r1=r2+r3+c

減法指令   sub    r1,r2,r3               r1 = r2-r3

逆向減法    rsb   r1,r2,r3               r1=r3-r2

帶借位減法    sbc r1,r2,r3              r1=r2-r3-!c

帶錯位逆減法 ( rsc)  r1,r2,r3         r1=r3-r2-!c

邏輯與指令    (and)  r0,r0,#0x0f

邏輯或指令   (orr)  r0,r0, #0x0f

邏輯異或       (eor)  r0,r0,#0x0f

位清除         (bic)   r0,r0,#9

比較指令       (cmp)  r1,#10              cpsr(程式狀態暫存器) = r1-10;

反值比較指令 (cmn)   r1,#10           cpsr = r1+r2

位測試指令   (tst)   r1,#3                cpsr = r1 and 3

相等測試     (teq)  r1,r3                 cpsr = r1 eor r2

資料傳輸指令 (mov)  r1,r2             r1 = r2

取反傳送指令 (mvn)  r1,r2          r1 = ~r2

ldr 可以作為載入指令:ldr指令用於從儲存器中將乙個32位的字資料傳送到目的暫存器中。

arm是risc結構,資料從記憶體到cpu之間的移動只能通過l/s指令來完成,也就是ldr/str指令。

比如想把資料從記憶體中某處讀取到暫存器中,只能使用ldr

比如:ldr r0, 0x12345678

就是把0x12345678這個位址中的值存放到r0中。

ldr偽指令:

1)arm指令集中,ldr通常都是作載入指令的,但是它也可以作偽指令。

ldr偽指令的形式是「ldr rn,=expr」。

(2)例子:

count equ       0x40003100

ldr       r1,=count

mov      r0,#0

str       r0,[r1]

關於ldr mov str 區分

count是我們定義的乙個變數,位址為0x40003100。

ldr       r1,=count是將count這個變數的位址,也就是0x40003100放到r1中。

mov      r0,#0是將立即數0放到r0中。

str      r0,[r1]是乙個典型的儲存指令,將r0中的值放到以r1中的值為位址的儲存單元去。實際就是將0放到位址為0x40003100的儲存單元中去。

str指令

格式如下:

str  源暫存器,《儲存器位址》

str指令用亍從源暫存器中將乙個32位的字資料傳送到儲存器中。該指令在程式設計中比較常

用,丏定址方式靈活多樣,使用方式可參考指令ldr。

指令示例:

str r0,[r1],#8             ;將r0中的字資料寫入以r1為位址的儲存器中,並將新位址r1+8寫入r1。

str r0,[r1,#8]             ;將r0中的字資料寫入以r1+8為位址的儲存器中。」

str     r1, [r0]                       ;將r1暫存器的值,傳送到位址值為r0的(儲存器)記憶體中

ARM彙編指令

b或bl指令引起處理器轉移到 子程式名 也就是位址 處開始執行,這兩個指令都是相對跳轉指令。兩者的不同之處在於bl指令在轉移到子程式執行之前,將其下一條指令的位址拷貝到r14 lr,鏈結暫存器 由於bl指令儲存了下條指令的位址,因此使用指令 mov pc lr 即可實現子程式的返回。而b指令則無法實...

arm彙編指令

一般arm官方風格彙編指令為大寫,windows ads mdk 實際運用一般用gnu風格,為小寫,linux 1 arm採用risc架構,cpu本身不能直接讀取內 存,而需要先將記憶體中內容加載入cpu中通用寄 存器中才能被 cpu處理 ldr loadregister 指令 將記憶體內容加載入通...

ARM彙編指令

1.彙編概述 2.指令分類學習 3.偽指令 4.協處理訪問指令 為什麼要學習使用匯程式設計序?bootloader kernel的初始化和需要執行效率極高的程式中 1.arm標準彙編 2.gnu彙編 section.data 初始化的資料 section.bss 未初始化的資料 section.te...