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

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日

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler