?? test4.s
字號:
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++;
; }
; 設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 *= 2;
; }
; 設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
; { x--;
; } 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)
; { case 0:
; case 2:
; case 3: x = key + y;
; break;
; case 5: x = key - y;
; break;
; case 7: x = key * y;
; break;
; default: x = 168;
; break;
; }
; 設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
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -