STM32 ARM常用彙編指令

2021-09-12 02:18:31 字數 1367 閱讀 1587

arm常用彙編指令:

1、 equ:給數字常量取乙個符號名,相當於c語言中的define

2、 area:彙編乙個新的**段或者資料段

3、 space:分配記憶體空間

4、 preserve8:當前檔案棧需要按照8位元組對齊

5、 export:宣告乙個標號具有全域性屬性,可被外部的檔案使用

6、 dcd:以字為單位分配記憶體,要求4位元組對齊,並要求初始化這些記憶體

7、 proc:定義子程式,與endp成對使用,表示子程式結束

8、 weak:弱定義,如果外部檔案宣告了標號,則優先使用外部檔案定義的標號,如果外部檔案沒有定義也不出錯。需要注意的是:這個不是arm的指令,是編譯器的,放在這裡是為了方便

9、 import:宣告標號來自外部檔案,不是在本程式定義的,跟c語言中的extern關鍵字類似

10、b:跳轉到乙個標號

12、align:編譯器對指令或者資料的存放位址進行對齊,一般需要跟乙個立即數,預設表示4位元組對齊。要注意的是:這個不是arm指令,是編譯器的,放在這裡是為了方便

13、end:到達檔案的末尾,檔案結束

14、if,else,endif:彙編條件分支語句,跟c語言的if else 類似。

15、mrs:載入特殊功能暫存器的值到通用暫存器

16、msr:儲存通用暫存器的值到特殊功能暫存器

17、cbz:比較,如果結果為0就轉移

18、cbnz:比較,如果結果非0就轉移

19、ldr:從儲存器中載入字到乙個暫存器中

20、ldr[偽指令]:載入乙個立即數或者乙個位址到乙個暫存器。舉例:ldr rd, = label,如果label是立即數,那rd等於立即數,如果label是乙個識別符號,比如指標,那存到rd的就是label這個識別符號的位址

21、ldrh:從儲存器中載入半字到乙個暫存器中

22、ldrb:從儲存器中載入位元組到乙個暫存器中

23、str:把乙個暫存器按字儲存到儲存器中

24、strh:把乙個暫存器存器的低半字儲存到儲存器中

25、strb:把乙個暫存器的低位元組儲存到儲存器中

26、ldmia:載入多個字,並且在載入後自增基址暫存器

27、stmia:儲存多個字,並且在儲存後自增基址暫存器

28、orr:按位或

29、bx:直接跳轉到由暫存器給定的位址

30、bl:跳轉到標號對應的位址,並且把跳轉前的下條指令位址儲存到lr

31、blx:跳轉到由暫存器reg給出的的位址,並根據reg的lsb切換處理器狀態 , 還要把轉移前的下條指令位址儲存到lr 。arm(lsb=0),thumb(lsb=1)。cm3只在thumb中執行,就必須保證reg的lsb=1,否則乙個fault打過來

ARM常用彙編指令

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

ARM架構常用彙編指令

博主自己的學習筆記,順便分享。不是教科書,有錯誤很正常,請指出,日後會修改。str r0,r1 r1是位址,將r0資料存放到r1指向的位址 str r0,r1,0x10 將r0資料寫入以r1 0x10為位址的儲存器中,r1不變 str r0,r1 0x10 將r0資料寫入以r1 0x10為位址的儲存...

ARM常用彙編指令介紹

b 跳轉指令 跳轉範圍為32mb pc 暫存器r15,程式計數器指向當前執行的程式位址 ldr 從記憶體中讀取資料載入到暫存器中 str 將暫存器中的資料儲存到記憶體 mov 暫存器與暫存器之間的資料傳送指令,也可以將立即數傳給目標暫存器 add 加法指令 sub 減法指令 bic 位清除指令 or...