彙編指令ldr str stm ldm

2021-10-09 05:48:30 字數 1205 閱讀 8059

ldr命令:把資料從記憶體載入到暫存器

ldr r0, =addr	;r0 = addr

ldr r1, [r0] ; r1 = *r0

ldr r1, [r0, #4] ; r1 = *(r0+4)

ldr r1, [r0, #4] ! ; r1 = *(r0+4);r0=r0+4;

ldr r1, [r0], #4 ; r1 = *(r0);r0=r0+4;

str命令:把資料從暫存器儲存到記憶體

str r1, [r0]		; *r0 = r1 

str r1, [r0, #4] ; *(r0+4) = r1

str r1, [r0, #4] ! ; *(r0+4) = r1;r0=r0+4;

str r1, [r0], #4 ; *r0 = r1;r0=r0+4;

**多資料傳輸指令:stm ldm **

arm指令的多資料傳輸(stm、ldm)中,提到:多暫存器的load和store指令分為2組:一組用於資料的儲存與讀取,對應於ia、ib、da、db,一組用於堆疊操作,對應於fd、ed、fa、ea,兩組中對應的指令含義相同。

即:

stmib(位址先增而後完成操作)、stmfa(滿遞增堆疊);

stmia(完成操作而後位址遞增)、stmea(空遞增堆疊);

s***b(位址先減而後完成操作)、stmfd(滿遞減堆疊);

s***a(完成操作而後位址遞減)、stmed(空遞減堆疊)。

上述各組2個指令含義相同只是適用場合不同,同理有:

ldmib、ldmed;

ldmia、ldmfd;

ldmdb、ldmea;

ldmda、ldmfa。

多暫存器載入/儲存指令共有8種模式(4個用與資料塊的傳輸,4個用於棧操作)

舉例

指令:s***b sp!,

含義:sp = sp - 4,先壓lr,sp = lr(即將lr中的內容放入sp所指的記憶體位址)。sp = sp - 4,再壓r12,sp = r12。sp = sp - 4,再壓r11,sp = r11…sp = sp - 4,最後壓r0,sp = r0。

如果想要將r0-r12和lr彈出,可以用ldmia指令:

指令:ldmia sp!,

mo彙編指令 彙編指令大全

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...

彙編 彙編指令大全

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...

彙編指令msr STM 常用彙編指令

在嵌入式開發中,匯程式設計序常常用於非常關鍵的地方,比如系統啟動時初始化,進出中斷時 的環境保護,恢復等對效能有要求的地方。arm指令集可以分為六大類,分別為資料處理指令 load store 指令 跳轉指令 程式狀態 暫存器處理指令 協處理器指令和異常產生指令。arm指令使用的基本格式如下 opc...