area example4,code,readonly ; 宣告**段example4
entry
; 標識程式入口
code32
; 宣告32位arm指令
start
; if(x>y) z=100;
; else z=50;
; 設x為r0,y為r1,z為r2 (x、y、z均為無符號整數)
mov
r0,#76
; 初始化x的值
mov
r1,#243
; 初始化y的值
cmp
r0,r1
; 判斷x>y?
movhi r2,#100
; x>y條件正確,z=100
movls r2,#50
; 條件失敗,z=50
; for(i=0; i<10; i++)
; ; 設x為r0,i為r2 (i、x均為無符號整數)
mov
r0,#0
; 初始化x的值
mov
r2,#0
; 設定i=0
for_l1
cmp
r2,#10
; 判斷i<10?
bhs
for_end
; r2>=10,退出迴圈
add
r0,r0,#1 ; 迴圈體,x++
add
r2,r2,#1 ; i++
b for_l1
for_end
nop; while(x<=y)
; ; 設x為r0,y為r1 (x、y均為無符號整數)
mov
r0,#1
; 初始化x的值
mov
r1,#20
; 初始化y的值
b while_l2 ; 首先要判斷條件
while_l1 mov
r0,r0,lsl #1 ; 迴圈體,x *= 2
while_l2 cmp
r0,r1
; 判斷x≤y?
bls
while_l1 ; 若條件正確,繼續迴圈
while_end nop
; do
; while(x>0);
; 設x為r0 (x為無符號整數)
mov
r0,#5
; 初始化x的值
dowhile_l1 add
r0,r0,#-1 ; 迴圈體,x--
dowhile_l2 movs r0,r0
; r0 <= r0,並影響條件碼標誌
bne
dowhile_l1 ; 若r0不為0(即x不為0),則繼續迴圈
dowhile_end nop
; switch(key&0x0f)
; ; 設x為r0,y為r1,key為r2 (x、y、key均為無符號整數)
mov
r1,#3
; 初始化y的值
mov
r2,#2
; 初始化key的值
switch
and
r2,r2,#0x0f ; switch(key&0x0f)
case_0
cmp
r2,#0
; case 0:
case_2
cmpne r2,#2
; case 2:
case_3
cmpne r2,#3
; case 3:
bne
case_5
add
r0,r2,r1 ;
x = key + y
b switch_end ;
break
case_5
cmp
r2,#5
; case 5:
bne
case_7
sub
r0,r2,r1 ;
x = key - y
b switch_end ;
break
case_7
cmp
r2,#7
; case 7:
bne
default
mul
r0,r2,r1 ;
x = key * y
b switch_end ;
break
default
mov
r0,#168
; default: x = 168
switch_end nop
halt
b halt
end
附:1.2023年4月27
控制流指令
轉移指令(branch)
說明:無條件轉移b,bal
舉例:
b label
; label為某個位置
條件轉移
說明:
beq
相等bne
不等bpl
非負bmi
負bcc
無進製bcs
有進製blo
小於(無符號數)
bhs
大於等於(無符號數)
bhi
大於(無符號數)
bls
小於等於(無符號數)
bvc
無溢位(有符號數)
bvs
有溢位(有符號數)
bgt
大於(有符號數)
bge
大於等於(有符號數)
blt
小於(有符號數)
ble
小於等於(有符號數)
ARM匯程式設計序學習
part1 匯程式設計序框架 一 完整框架 section.data 初始化的資料 section.bss 未初始化的資料 section.text global start start 入口 彙編 二 簡化框架 text global start start 彙編 注 以上簡化版為常用框架 par...
ARM學習之ARM匯程式設計序
在arm thumb 組合語言程式中以程式段為單位組織 段可以分為 段 code section 和資料段 data section 乙個匯程式設計序至少應該有乙個 段,當程式較長時,可以分割為多個 段和資料段,多個段在程式編譯鏈結時最終形成乙個可執行的映像檔案。可執行映像檔案的構成 鏈結器根據系統...
ARM匯程式設計序鑑賞 1
area asmembedeedfile code,readonly 定義一段可讀的 區域 export mulcountfunction 輸出函式 mulcountfunction import val 插入變數val mulcountfunction ldr r1,val 取val的暫存器位址,...