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

使用TASM循环打印文本三角图案的问题求助

TASM汇编程序修正方案

原代码存在的问题

  • 未实现123的输出逻辑,仅输出了字母和*
  • 字符递增错误:add dl,2会跳过B、D等字符,无法得到连续的A→B→C序列
  • 无换行处理,所有输出堆积在同一行
  • 缺少X组成三角的实现代码
  • 回车输出语句位置错误,需放在每一行输出完成后

修正后的代码

.model small
.stack
.code
main proc
    mov ax, @data   ; 初始化数据段(规范操作,避免潜在问题)
    mov ds, ax

    mov cx, 3       ; 控制输出A/B/C三行,需更多行可改为5
outer_loop:
    ; 输出当前字母(A→B→C)
    mov ah, 2
    mov dl, 'A'
    add dl, 3 - cx  ; 按循环次数计算字母:cx=3→A,cx=2→B,cx=1→C
    int 21h

    ; 输出"123*"
    mov dl, '1'
    int 21h
    mov dl, '2'
    int 21h
    mov dl, '3'
    int 21h
    mov dl, '*'
    int 21h

    ; 输出X三角:第n行输出n个X
    push cx         ; 保存外层循环计数
inner_x_loop:
    mov dl, 'X'
    int 21h
    loop inner_x_loop
    pop cx          ; 恢复外层循环计数

    ; 换行(回车+换行符)
    mov dl, 13
    int 21h
    mov dl, 10
    int 21h

    loop outer_loop

    ; 程序退出
    mov ah, 4ch
    int 21h
main endp
end main

代码说明

  1. 数据段初始化:添加mov ax,@data和mov ds,ax,符合TASM程序的标准结构
  2. 字母序列控制:通过add dl,3 - cx动态计算当前字母,实现连续的A→B→C输出
  3. 补全123*输出:依次输出指定字符,满足需求中的基础内容
  4. X三角实现:利用外层循环的计数控制X的输出数量,形成正三角效果;若需倒三角,可调整内层循环的初始计数
  5. 换行处理:每一行输出完成后输出回车和换行,保证内容按行显示
  6. 灵活调整行数:修改mov cx,3为mov cx,5即可输出5行内容,字母自动递增到E

编译运行步骤

  1. 在DOSBox中进入代码所在目录
  2. 编译:tasm program.asm
  3. 链接:tlink program.obj
  4. 运行:program.exe

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:53:11