子程序:
AREA MAIN, CODE, READONLY
ENTRY
CODE32
start
MOV R2,#0
MOV R3,#0 ;R3存放累加和,初始值为0
LDR R1,=n
LDR R1,[R1] ;将n的值存入R1
BL add ;调用add子程序
stop
MOV R0,#0x18
LDR R1,=0x20026
SWI 0x123456
add
MOV R2,R1
ADD R3,R3,R2
SUBS R1,R1,#1
BNE add
LDR R1,=dst
STR R3,[R1] ;累加和写入dst单元
MOV PC,LR ;子程序返回
AREA NUM,DATA,READWRITE
n DCD 100
dst DCD 0
END
宏指令:
方法一:
MACRO
ADD_START ;宏名
LCLA sum ;定义局部变量
LCLA n
sum SETA 0 ;给变量赋值
n SETA 100
MOV R1,#n
add
MOV R2,R1
ADD R3,R3,R2
SUBS R1,R1,#1
BNE add
LDR R1,=sum
STR R3,[R1] ;累加和写入sum单元
MEND
AREA Example,CODE,READONLY
ENTRY
CODE32
start
MOV R2,#0
MOV R3,#0 ;R3存放累加和,初始值为0
ADD_START
over
END
方法二:
MACRO
$lable addrt $a,$b
$lable.add
ADDS $a,$a,#1
ADDS $b,$b,$a
CMP $a,#100
BNE $lable.add
MOV R2,$b
MEND
AREA add, CODE, READONLY
ENTRY
CODE32
START MOV R0, #1
MOV R1, #1
Hong addrt R0,R1
STOP
MOV R0, #0X18
LDR R1, =0X20026
SWI 0X123456
END