**- 格式**
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...