一、儲存器訪問指令
儲存器訪問指令分為單暫存器操作指令和多暫存器操作指令。所有單暫存器載入/儲存指令可分為「字和無符號位元組載入儲存指令」和「半字和有符號位元組載入儲存指令。一條指令處理多暫存器的載入/儲存。
(1)、單暫存器訪問的位址形式
(2)、單暫存器訪問的定址方式
(3)、多暫存器訪問
多暫存器載入/儲存指令可以實現在一組暫存器和一塊連續的記憶體單元之間傳輸資料。ldm為載入多個暫存器;stm為儲存多個暫存器。允許一條指令傳送16個暫存器的任何子集或所有暫存器。它們主要用於現場保護、資料複製、常數傳遞等。
二、資料處理指令
資料處理指令大致可分為3類:資料傳送指令;算術邏輯運算指令;比較指令。
資料處理指令只能對暫存器的內容進行操作,而不能對記憶體中的資料進行操作。所有arm資料處理指令均可選擇使用s字尾,並影響狀態標誌。
(1)、資料傳送指令
mov指令將8點陣圖立即數或暫存器傳送到目標暫存器(rd),可用於移位運算等操作。
例如:mov r3, r1, lsl #3 ;r3=r1×8
mov指令用於將資料從乙個暫存器傳送到另乙個暫存器中,或者將乙個常數傳送到乙個暫存器中,
但是不能訪問記憶體。
ldr指令用於從記憶體中讀取資料放入暫存器中。
(2)、算術邏輯運算指令
(3)、比較指令
比較指令將兩個數值進行的特定運算,根據運算結果影響
cpsr
的相關標誌位,用於後面程式的條件執行,但是運算結果不予儲存。
cmp:
數值比較。將暫存器的值減去運算元的值
cmn:
負數比較。將暫存器的值加上運算元的值。結果為0,z=1;否則z=0;
tst:
位測試。暫存器的值與運算元的值按位"與"操作。結果為0,z=1;否則z=0;
teq:
相等測試。暫存器的值與運算元的值按位"異或"操作。結果為0,z=1;否則z=0;
三、分支指令
1、在arm中有兩種方式可以實現程式的跳**
(1)直接向
pc暫存器賦值實現跳轉;例: mov pc, r14
(2)使用分支指令直接跳轉。
2、分支指令種類 b
:分支指令 bl
:帶鏈結的分支指令bx:
帶狀態切換的分支指令
四、雜項指令
1、程式狀態暫存器讀指令:
mrs在
arm處理器中,只有
mrs指令可以對狀態暫存器
cpsr
和spsr
進行讀操作。通過讀
cpsr
可以了解當預處理器的工作狀態。讀
spsr
暫存器可以了解到進入異常前的處理器狀態。例如:
mrs r1, cpsr ; 讀取
cpsr
狀態暫存器到
r1mrs r2, spsr ; 讀取
spsr
狀態暫存器到
r22、程式狀態暫存器寫指令:
msr在
arm處理器中,只有
msr指令可以對狀態暫存器
cpsr
和spsr
進行寫操作。與
mrs配合使用,可以實現對
cpsr
或spsr
暫存器的讀-修改
-寫操作,可以切換處理器模式等操作。
五、偽指令
在匯程式設計序中經常會使用一些其他的偽指令,包括以下18條:
assert area
align code16/code32
entry end
equ import
export/global extern
incbin get/include
rn rout
adr adrl
ldr nop
arm指令 ldr指令
ldr指令ldr作為指令 偽指令在arm彙編中。ldr指令格式 ldr 目的暫存器,儲存器位址 ldr r0,r1 將儲存器位址為r1的字資料讀入暫存器r0。ldr r0,r1,r2 將儲存器位址為r1 r2的字資料讀入暫存器r0。ldr r0,r1,8 將儲存器位址為r1 8的字資料讀入暫存器r0...
ARM彙編指令
b或bl指令引起處理器轉移到 子程式名 也就是位址 處開始執行,這兩個指令都是相對跳轉指令。兩者的不同之處在於bl指令在轉移到子程式執行之前,將其下一條指令的位址拷貝到r14 lr,鏈結暫存器 由於bl指令儲存了下條指令的位址,因此使用指令 mov pc lr 即可實現子程式的返回。而b指令則無法實...
ARM指令縮寫
adcadd wihc t arry,包含旗標位元的算術加法指 包含旗標位元的算術加法指 addadd,算術加法指 andlogical and,輯and運算指 bbranch,跳躍指 bicbit clear,位元清除指 blbranch with link with link,包含返回的跳躍指 ...