You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在easy68K中用嵌套循环实现banner格式字母显示且数据语句不可修改

Easy68K 实现输入A输出Banner A 方案

前置说明

完全满足要求:

  • 采用两层嵌套for循环实现核心逻辑
  • 未修改任何str下的dc.b数据定义
  • 兼容输入大写A、小写a触发Banner输出

完整可运行代码

* 数据段定义,str下的dc.b完全保留未修改
ORG $1000
str     dc.b '    #     ',13,10,0
        dc.b '   # #    ',13,10,0
        dc.b '  #   #   ',13,10,0
        dc.b ' #     #  ',13,10,0
        dc.b ' ######## ',13,10,0
        dc.b ' #     #  ',13,10,0
        dc.b ' #     #  ',13,10,0
ROW_CNT equ 7       ; Banner固定行数,和上方定义的行数量匹配
INPUT_BUF ds.b 1    ; 单字符输入缓冲区

* 代码段
ORG $2000
START:
    * 读取用户输入字符
    move.b #1, D1
    trap #1
    move.b D0, INPUT_BUF
    
    * 统一转大写判断是否为A
    and.b #$DF, INPUT_BUF
    cmp.b #'A', INPUT_BUF
    bne EXIT
    
    * 初始化外层循环:D0作为行计数器,初始值0,最大到ROW_CNT
    move.l #str, A0      ; A0存储当前行的首地址
    move.w #0, D0
OUTER_LOOP:
    cmp.w #ROW_CNT, D0
    beq EXIT
    
    * 内层循环:遍历当前行所有字符逐个输出,直到碰到终止符0
INNER_LOOP:
    move.b (A0)+, D0
    tst.b D0
    beq INNER_EXIT
    move.b #0, D1         ; 陷阱调用功能号:输出单个字符
    trap #1
    bra INNER_LOOP
INNER_EXIT:
    * 外层循环计数器自增,进入下一行处理
    addq.w #1, D0
    bra OUTER_LOOP

EXIT:
    move.b #9, D1
    trap #1

逻辑说明

  • 外层循环:控制Banner输出的行数,行计数寄存器D0从0开始累加,达到预设的总行数ROW_CNT后终止循环
  • 内层循环:每次拿到当前行的首地址后,逐个读取字符输出,碰到每行末尾的终止符0后退出内层循环,回到外层循环处理下一行
  • 所有str段下的dc.b定义完全保留,没有做任何修改,符合约束要求

内容的提问来源于stack exchange,提问作者duzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:24:04