生成20个20~50的随机数,存放于对象X3中,并实现以下功能:
(1)设计子程序fun_aver,统计上述20个数的最小值存于min单元。
(2)设计子程序fun_sort,将上述数组升序排列。
(3)设计子程序fun_filter,将与min绝对值差10以内的数,存到对象X4中。
AREA SGQ,CODE,READONLY
IMPORT randomnumber
CODE32
ENTRY
NUM EQU 20
MIN EQU 20
MAX EQU 50
LDR R3,=NUM
LDR R4,=SRC
LOOP
BL randomnumber
MOV R0,R0,LSR #24
CMP R0,#MIN
BLO LOOP
CMP R0,#MAX
BHS LOOP
TST R0,#0X01
BEQ LOOP
STRB R0,[R4],#1
SUBS R3,R3,#1
BNE LOOP
BL fun_aver
BL fun_sort
BL fun_filter
stop
B stop
fun_aver
LDR R4,=SRC
LDR R3,=NUM
LOOP1
SUB R3,R3,#1
MOV R5,R3
LDR R4,=SRC
LOOP2
LDRB R6,[R4],#1
LDRB R7,[R4]
CMP R6,R7
STRHSB R6,[R4]
SUBHS R4,R4,#1
STRHSB R7,[R4],#1
SUB R5,R5,#1
CMP R5,#0
BNE LOOP2
CMP R3,#1
BNE LOOP1
MOV PC,LR
fun_sort
LDR R4,=SRC
LDR R3,=NUM
LDR R5,=min
LDRB R7,[R4]
STRB R7,[R5]
MOV PC,LR
fun_filter
LDR R4,=X3
LDR R3,=NUM
LDR R5,=X4
LDR R6,=min
LDRB R6,[R6]
LOP
SUBS R3,R3,#1
BEQ LOP1
LDRB R8,[R4],#1
SUB R7,R6,R8
CMP R7,#10
BGT LOP
STRB R8,[R5],#1
B LOP
SUB R7,R8,R6
CMP R7,#10
BGT LOP
STRB R8,[R5],#1
B LOP
LOP1
MOV PC,LR
min
DCB 0
X4
SPACE 100
SRC
SPACE 100
END