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 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab