?? test5.s
字號:
; 文件名:TEST5.S
; 功能:計算1+2+...+N的值
; 說明:N≥0,當N=0時結果為0;當N=1時結果為1。
N EQU 100 ; 定義N的值為100
AREA Example5,CODE,READONLY ; 聲明代碼段Example5
ENTRY ; 標識程序入口
CODE32 ; 聲明32位ARM指令
ARM_CODE LDR SP,=0x40003F00 ; 設置堆棧指針
ADR R0,THUMB_CODE+1
BX R0 ; 跳轉并切換處理器狀態
LTORG ; 聲明文字池
CODE16 ; 聲明16位Thumb指令
THUMB_CODE LDR R0,=N ; 設置子程序SUM_N的入口參數
BL SUM_N ; 調用子程序SUM_N
B THUMB_CODE
; 名稱:SUM_N
; 功能:計算1+2+...+N的值
; 入口參數:R0 N的值
; 出口參數:R0 運算結果
; 占用資源:R0
; 說明:當N=0時結果為1;當N=1時結果為1。
; 若運算溢出,結果為0。
SUM_N
PUSH {R1-R7,LR} ; 寄存器入棧保護
MOVS R2,R0 ; 將N的值復制到R2,并影響條件碼標志
BEQ SUM_END ; 若N的值為0,則返回。(此時R0沒有被更改)
CMP R2,#1
BEQ SUM_END ; 若N的值為1,則返回。(此時R0沒有被更改)
MOV R1,#1 ; 初始化計數器R1=1
MOV R0,#0 ; 初始化結果寄存器R0=0
SUM_L1 ADD R0,R1 ; R0 = R0 + R1
BCS SUM_ERR ; 結果溢出,跳轉到SUM_ERR
CMP R1,R2 ; 將計數器的值與N比較
BHS SUM_END ; 若計數器的值≥N,則運算結束
ADD R1,#1
B SUM_L1
SUM_ERR MOV R0,#0
SUM_END POP {R1-R7,PC} ; 寄存器出棧,返回
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -