ARM 彙編指令(更新中)

2021-07-14 18:57:47 字數 1677 閱讀 4826

**- 格式**

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

str指令用亍從源暫存器中將乙個32位的字資料傳送到儲存器中。

**- 案例**

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

並將新位址r1+8寫入r1。

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

**- 格式**

orr 目的暫存器,運算元1,運算元2

orr指令用於在兩個運算元上進行邏輯或運算,並把結果放置到目的暫存器中。

運算元1應是乙個暫存器,運算元2可以是乙個暫存器,被移位的暫存器,

或乙個立即數。該指令常用於設定運算元1的某些位。

**- 案例**

orr r0,r0,#3 ;該指令設定r0的0、1位,其餘位保持不變。

**- 格式**

bic 目的暫存器,運算元1,運算元2

bic指令用於清除運算元1的某些位,並把結果放置到目的暫存器中。

運算元1應是乙個暫存器,運算元2可以是乙個暫存器,

被移位的暫存器,或乙個立即數。

運算元2為32位的掩碼,如果在掩碼中設定了某一位,

則清除這一位。未設定的掩碼位保持不 變。

**- 案例**

bic r0,r0,#%1011 ;該指令清除r0中的位 0、1、和 3,其餘的位保持不變。

**- 格式**

mrs 通用暫存器 程式狀態暫存器(cpsr或spsr)

mrs指令用於將程式狀態暫存器的內容傳送到通用暫存器中。

該指令一般用在以下兩種情況:

ⅰ.當需要改變程式狀態暫存器的內容時,可用mrs將程式狀態暫存器的內容

讀入通用暫存器,修改後再寫回程式狀態暫存器。

ⅱ.當在異常處理或程序切換時,需要儲存程式狀態暫存器的值,可先用該指令

讀出程式狀態暫存器的值,然後儲存。

**- 案例**

mrs r0,cpsr ;傳送cpsr的內容到r0

mrs r0,spsr ;傳送 spsr的內容到r0

**- 格式**

msr 程式狀態暫存器(cpsr或spsr)_《域》,運算元

msr指令用於將運算元的內容傳送到程式狀態暫存器的特定域中。

其中,運算元可以為通用暫存器或立即數。

《域》用於設定程式狀態暫存器中需要 操作的位,32位的程式狀態暫存器可分為4個域:

位[31:24]為條件位域,用f表示;

位[23:16]為狀態位域,用s表示;

位[15:8] 為擴充套件位域,用x表示;

位[7:0] 為控制位域,用c表示;

該指令通常用於恢復或改變程式狀態暫存器的內容,在使用時,一般要在msr指令中指明將要操作的域。

**- 案例**

msr cpsr,r0 ;傳送r0的內容到cpsr

msr spsr,r0 ;傳送r0的內容到spsr

msr cpsr_c,r0 ;傳送r0的內容到spsr,但僅僅修改cpsr中的控制位域

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...