1.彙編概述
2.指令分類學習
3.偽指令
4.協處理訪問指令
為什麼要學習使用匯程式設計序?
bootloader、kernel的初始化和需要執行效率極高的程式中
1.arm標準彙編
2.gnu彙編
.section.data
《初始化的資料》
.section.bss
《未初始化的資料》
.section.text//標明**段
.global _start//標明為全域性的,以便外部使用
_start:
《彙編**》
1。算術和邏輯指令
2.比較指令
3.跳轉指令
4.移位指令
5.程式狀態字訪問指令
6.儲存器訪問指令
1。算術和邏輯指令:
移位mov [條件] [s] , //目的(通用暫存器),源頭(通用暫存器或者立即數)
dest =op_1
示例:
@mov指令範例
mov r1,#8
mov r2,r1
mov r3,#10
mvn ,//取反賦值
dest=!op_1
@mvn指令示例
mvn r1,#0b10
mvn r2,#5
mvn r3,r1
減法sub ,,//差值,被減數,減數
dest=op_1-op_2
@sub指令示例
mov r2,#4
sub r1,#r2,#2//立即數不能做被減數
mov r0,#1
sub r3,r1,r0
加法add ,,//和,加數,加數
dest=op_1+op_2
@add指令示例
add r1,r2,#3//將r2暫存器的值與立即數
邏輯與:and ,,//和,加數,加數
dest=op_1 and op_2
@and指令範例
mov r1,#5
and r2,r1,#0//r2=0
mov r1,#5
and r2,r1,#1//r2=1
bic ,,//和,加數,加數
dest=op_1and(!op_2)
bic r0,r0,#0b1011
@bic指令範例
mov r1,#0b101011
bic r2,r1,#0b101
cmp:比較
cmpbic
,, status=op_1-op_2
比較結果值儲存於程式狀態暫存器cpsr的n,z位會發生改變,如果為負值則n被置位,如果結果為0則z被置位
@cmpbic**範例
mov r1,#2
mov r1,#1
mov r1,#2
cmp r1,#3
tst,,
status=op_1 and op_2
比較結果值儲存於程式狀態暫存器cpsr的n,z位會發生改變,如果為負值則n被置位,如果結果為0則z被置位
@tst**範例
mov r1,#0b101
tst r1,#0b001
mov r1,#0b101
tst r1,#0b10
b mov r1,#6
mov r2,#5
cmp r1,r2
bgt branch1:
add r3,r1,r2
b end
branch1:
sub r3,r1,r2
end:
nop
@bl操作範例
mov r1,#2
cmp r1,#1
bl func1
mov r1,#2
cmp r1,#3
func1:
mov r1,#2
mov r2,#3
mov pc,lr
b和bl的區別,bl的操作會在執行完成後將下一條指令存入lr暫存器,在執行完成後將pc指標指向該處繼續執行。
lsl邏輯或算術左移
mov r0,r1,lsl#2
@lsl範例
mov r1,#0b1
mov r1,r1,lsl#2
ror迴圈右移
mov r1,#0b11
mov r1,r1,ror#1
由11變為0b100000000000000000000000000000000000001
msr搬回
@範例mrs搬出
mrs r0,cpsr
orr r0,#0b100
msr cpsr,r0
ldr把記憶體的值載入到通用暫存器
str把通用暫存器的值儲存到記憶體
mov r0,#0xff
str,r0,[r1]將r0的值儲存到r1儲存的記憶體位址處
ldr,r2,[r1]將r1儲存的位址處的資料寫入通用暫存器
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彙編指令
加法指令 add r1,r2,r3 r1 r2 r3 帶進製加法 adc r1,r2,r3 r1 r2 r3 c 減法指令 sub r1,r2,r3 r1 r2 r3 逆向減法 rsb r1,r2,r3 r1 r3 r2 帶借位減法 sbc r1,r2,r3 r1 r2 r3 c 帶錯位逆減法 rs...