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

如何修改emu8086汇编金字塔程序以生成指定数字图案?

修复后的EMU8086汇编程序

你的原程序存在两个关键问题:一是包含多余的空格打印循环,二是固定打印字符'1'未随行数递增。以下是修改后的代码,可直接输出目标图案:

.model small
.stack 100h
.data
    nl db 0dh, 0ah, '$' ; 换行符
.code
    main proc
    mov ax, @data
    mov ds, ax
    mov cx, 5          ; 外层循环次数(总行数)
    mov bx, 1          ; 当前行要打印的数字及次数
    
    for_1:    
    push cx             ; 保存外层循环计数器
    mov cx, bx          ; 设置内层循环次数(等于当前数字)
    mov dl, '0'         ; 从ASCII'0'开始
    add dl, bx          ; 加上bx得到对应数字的ASCII码(1→'1',2→'2'...)
    mov ah, 02h         ; DOS输出字符功能号
    
    for_3: 
    int 21h             ; 打印当前数字
    loop for_3          ; 内层循环,打印bx次数字
            
    lea dx, nl          ; 加载换行符地址
    mov ah, 09h
    int 21h             ; 执行换行
    inc bx              ; 数字加1,行数加1
    pop cx              ; 恢复外层循环计数器
    loop for_1          ; 外层循环,执行5次
    
    mov ah, 4ch
    int 21h             ; 程序退出
    main endp
end main

修改说明

  • 移除原程序中无用的for_2空格打印循环,目标图案无需前置空格。
  • 将固定的mov dl, '1'改为从'0'出发加bx,通过ASCII码计算得到当前行对应的数字字符。
  • 确保内层循环次数cx正确设置为当前行的数字值bx,保证每行打印对应次数的数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:12:11