qq_53854639 2021-12-20 20:59 采纳率: 100%
浏览 97
已结题

ARM 排序题 生成20个20~50的随机数

生成20个20~50的随机数,存放于对象X3中,并实现以下功能:
(1)设计子程序fun_aver,统计上述20个数的最小值存于min单元。
(2)设计子程序fun_sort,将上述数组升序排列。
(3)设计子程序fun_filter,将与min绝对值差10以内的数,存到对象X4中。

  • 写回答

1条回答 默认 最新

  • m0_65592162 2021-12-20 21:02
    关注

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月20日
  • 已采纳回答 12月20日
  • 创建了问题 12月20日