基礎常用arm彙編指令

2021-10-01 09:18:31 字數 1488 閱讀 5379

ldr 目的暫存器 《儲存器位址》

作用: 指令從記憶體中讀出資料到暫存器中

比如:ldr r1, [r2,#4] //將位址r2+4的記憶體單元的資料讀取到r1中

ldr r1,[r2] //將位址r2的記憶體單元的資料讀取到r1中。

r1<——[r2]

注意:ldr中的第二個引數為=時,表示偽指令,或者表示記憶體訪問指令

比如 ldr r1,=4096 ;

把指令暫存器的值儲存到記憶體中。

比如:str r1,[r2,#4] //將r1的資料儲存到位址為r2+4的記憶體單元中

str r1,[r2] //將r1的資料儲存到位址為r2的記憶體單元中

r1——>[r2]

格式如下:

ldm

表示位址變化模式,有以下4中方式

1、ia(increment after):事後遞增

2、ib(increment before):事先遞增

3、da(decrement after):事後遞減

4、db(decrement before):事先遞減

!表示執行後,rn的值會更新,等於下乙個記憶體的位址

表示從所對應的記憶體塊中取出資料,寫入這些暫存器中。

比如:ldmia sp,

sp——>

即把sp所對應的記憶體的位址上的資料寫入到fp,sp,pc暫存器中。中。執行完之後sp的位址不會更新。

格式如下:

stm

表示位址變化模式,有以下4中方式

1、ia(increment after):事後遞增

2、ib(increment before):事先遞增

3、da(decrement after):事後遞減

4、db(decrement before):事先遞減

!表示執行後,rn的值會更新,等於下乙個記憶體的位址

表示把暫存器中的值寫入到所對應的記憶體塊中。

比如:stmia sp!,

sp——>

把fp,sp,pc所對應的資料寫入到sp對應的記憶體塊中,執行完後,sp的位址會更新。

注意:其中高編號的暫存器存在高位址,與其順序無關

add r1,r2, #1 //表示r1 = r2+1,即暫存器r1的值等於暫存器r2的值加1.

sub r1,r2,#1 //表示r1 = r2 -1,即暫存器r1的值等於r2的值減1.

這兩條指令的跳轉範圍為當前指令的前後32mb

mov指令是資料傳送指令,也是最基本的程式設計指令,用於將乙個資料從源位址傳送到目標位址(暫存器間的資料傳送本質上也是一樣的)。其特點是不破壞源位址單元的內容。

mov ax,2000h;將16位資料2000h傳送到ax暫存器

mov al,20h;將8位資料20h傳送到al暫存器

mov ax,bx;將bx暫存器的16位資料傳送到ax暫存器

msr cpsr,r0 //複製r0到cpsr中

mrs r0,cpsr //複製cpsr到r0中

ARM常用彙編指令

1 gbll 偽指令用於定義乙個全域性的邏輯變數,並初始化為。gbll bootloader bootloader setl 2 get 或 include get 偽指令用於將乙個原始檔包含到當前的原始檔中,並將被包含的原始檔在當前位置進行彙編處理。可以使用 include 代替 get。incl...

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 指令 將記憶體內容加載入通...