?? test4.s
字號:
; 文件名:TEST4.S
; 功能:計算X的n次方的值
; 說明:X和n均為無符號整數
X EQU 9 ; 定義X的值為9
n EQU 8 ; 定義n的值為8
AREA Example4,CODE,READONLY ; 聲明代碼段Example4
ENTRY ; 標識程序入口
CODE32 ; 聲明32位ARM指令
START LDR SP,=0x40003F00 ; 設置堆棧(滿遞減堆棧,使用STMFD/LMDFD指令)
LDR R0,=X
LDR R1,=n
BL POW ; 調用子程序POW,返回值為R0
HALT B HALT
; 名稱:POW
; 功能:整數乘方運算。
; 入口參數:R0 底數
; R1 指數
; 出口參數:R0 運算結果
; 占用資源:R0、R1
; 說明:本子程序不考慮溢出問題
POW
STMFD SP!,{R1-R12,LR} ; 寄存器入棧保護
MOVS R2,R1 ; 將指數值復制到R2,并影響條件碼標志
MOVEQ R0,#1 ; 若指數為0,則設置R0=1
BEQ POW_END ; 若指數為0,則返回
CMP R2,#1
BEQ POW_END ; 若指數為1,則返回。(此時R0沒有被更改)
MOV R1,R0 ; 設置DO_MUL子程序的入口參數R0和R1
SUB R2,R2,#1 ; 計數器R2 = 指數值減1
POW_L1 BL DO_MUL ; 調用DO_MUL子程序,R0 = R1 * R0
SUBS R2,R2,#1 ; 每循環一次,計數器R2減1
BNE POW_L1 ; 若計數器R2不為0,跳轉到POW_L1
POW_END LDMFD SP!,{R1-R12,PC} ; 寄存器出棧,返回
; 名稱:DO_MUL
; 功能:32位乘法運算。
; 入口參數:R0 乘數
; R1 被乘數
; 出口參數:R0 計算結果
; 占用資源:R0、R1
; 說明:本子程序不會破壞R1
DO_MUL MUL R0,R1,R0 ; R0 = R1 * R0
MOV PC,LR ; 返回
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -