使用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
代码说明
- 数据段初始化:添加
mov ax,@data和mov ds,ax,符合TASM程序的标准结构 - 字母序列控制:通过
add dl,3 - cx动态计算当前字母,实现连续的A→B→C输出 - 补全123*输出:依次输出指定字符,满足需求中的基础内容
- X三角实现:利用外层循环的计数控制X的输出数量,形成正三角效果;若需倒三角,可调整内层循环的初始计数
- 换行处理:每一行输出完成后输出回车和换行,保证内容按行显示
- 灵活调整行数:修改
mov cx,3为mov cx,5即可输出5行内容,字母自动递增到E
编译运行步骤
- 在DOSBox中进入代码所在目录
- 编译:
tasm program.asm - 链接:
tlink program.obj - 运行:
program.exe
内容的提问来源于stack exchange,提问作者yukii cookie
相关产品推荐
相关产品推荐

