Assembly &引用;“程序成功执行”;显示在我的程序显示的ASCII图形的中间

Assembly &引用;“程序成功执行”;显示在我的程序显示的ASCII图形的中间,assembly,dos,x86-16,ascii-art,Assembly,Dos,X86 16,Ascii Art,我的目标是生成一个连续的菱形。我正确地编写了代码,但在运行时遇到了问题。问题在于声明 “程序已成功执行。请按任意键继续” 正在形状之间显示。如何修复它 .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

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

“程序已成功执行。请按任意键继续”

正在形状之间显示。如何修复它

.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


我看到您正在使用BIOS功能
int10h
,我假设是为了移动光标

<>你可能把光标放在你的形状中间的一条线上。

程序退出后,操作系统将在光标所在行的后面打印该文本<如果你不想在你的形状中间,在退出之前把光标移到底部。< /强>(或者打印你的形状从上到下的顺序,这样光标就结束了,而不是在每个字符之间移动)。 (我没有详细阅读您的代码,只是看了一下图像。但这似乎是一个很好的猜测。)

如果您在屏幕上显示的图形不是从上到下和从左到右运行的,则可以很好地工作

<>如果OS或仿真器是硬连接的,只在屏幕中间打印这些消息,那么它就无助于将光标定位在任何地方! 如果您的输出占据了整个屏幕,并且您希望不受干扰地注视它,那么您可以通过等待额外的按键来推迟结束程序。只要不按附加键,恼人的消息就不会出现

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