"program successfully executed" 显示在我的程序显示的 ASCII 图形中间

"program successfully executed" displayed in the middle of the ASCII graphics that my program shows

我的目标是生成一个连续的菱形。我正确地编写了代码,但在运行时遇到了问题。问题是语句

"program successfully executed. Press any key to continue"

正在显示中间形状。如何解决?

.model small
.stack 100h

.code
main proc

Des:


    mov ah,2
    mov bh,0
    mov dh,1
    mov dl,1
    int 10h
    mov cx,7
    mov count,6

    local count:word=vars_room

    Des2a:    
    dec cx  ;moving downward
    mov bl,dl
    mov dl,'1'
    int 21h
    mov dl,bl
    inc dl
    inc dh
    int 10h
    cmp cx,0
    jne Des2a
    mov dh,0
    mov cx,8
    dec count
    cmp count,0
    jne Des2a
    mov dl,'1'
    int 21h

    mov ah,2
    mov bh,0
    mov dh,9
    mov dl,1
    int 10h
    mov count,6
    mov cx,7

    Des2b:
    mov bl,dl
    mov dl,'1'
    int 21h
    mov dl,bl
    inc dl
    dec dh
    int 10h
    dec cx
    jnz Des2b
    mov dh,10
    mov cx,8
    dec count
    cmp count,0
    jne Des2b
    mov dl,'1'
    int 21h

    mov cx,9



    mov ah,4ch
    int 21h`

main endp
end main

i have included an image of my problem

我看到你正在使用 BIOS 函数 int 10h,我假设是为了光标移动。

您可能将光标留在形状中间的一条线上。

程序退出后,OS 会在光标所在行之后的行上打印该文本。 如果您不希望它位于形状的中间,请在退出前将光标移动到底部。(或者以纯从上到下的顺序打印您的形状,以便光标结束在那里,而不是在每个字符之间移动它。)

(我没有详细阅读你的代码,只是看了图片。但这似乎是一个很好的猜测。)

如果您在屏幕上显示的图形不是从上到下和从左到右 运行,那么 可能会足够好。

如果 OS 或模拟器被硬连接为只在屏幕中间打印这些消息,那么将光标定位在任何地方都无济于事!

如果您的输出占据了整个屏幕并且您想不受干扰地注视它,那么您可以通过等待额外的按键来推迟结束程序。只要不按下附加键,就不会出现烦人的消息。

mov ah, 01h    ;Wait for an extra key
int 21h
mov ax, 4C00h  ;Terminate program
int 21h