Debugging 当我单步执行某个程序时,它会在Turbo Debugger中工作,但当我在TD或DOS中运行它时,它会停止并按Ctrl+;Alt+;删除成为唯一的选项

Debugging 当我单步执行某个程序时,它会在Turbo Debugger中工作,但当我在TD或DOS中运行它时,它会停止并按Ctrl+;Alt+;删除成为唯一的选项,debugging,assembly,dos,bios,tasm,Debugging,Assembly,Dos,Bios,Tasm,该程序旨在使用biosint10h显示char表,它可以这样做,但只有当我在td中一步一步地通过它时。我认为在调试器中未初始化的寄存器可能包含零,但在运行时它们可能包含垃圾,因此我将mov ax,0003h替换为mov al,3,并添加了xor dx,dx;但它也不起作用 .model tiny .code org 100h start: mov ax, 0003h int 10h xor dx, dx mov si, 256 mov ax, 0900h

该程序旨在使用biosint10h显示char表,它可以这样做,但只有当我在td中一步一步地通过它时。我认为在调试器中未初始化的寄存器可能包含零,但在运行时它们可能包含垃圾,因此我将mov ax,0003h替换为mov al,3,并添加了xor dx,dx;但它也不起作用

.model tiny
.code
org 100h
start:
    mov ax, 0003h
    int 10h
    xor dx, dx
    mov si, 256
    mov ax, 0900h
    mov cx, 1
    xor bh, bh
    mov bl, 00011111b
cloop:
    int 10h
    push ax
    mov ah, 2
    inc dl
    int 10h
    mov ax, 0920h
    int 10h
    mov ah, 2
    inc dl
    int 10h
    pop ax
    inc al
    test al, 0Fh
    jnz con_loop
    mov ah, 2
    inc dh
    xor dl, dl
    int 10h
    pop ax
con_loop:
    dec si
    jnz cloop
    ret
end start

您的
pop
指令与
push
指令不对应:

    push ax
    ...
    pop ax
    inc al
    ...
    int 10h
    pop ax    <-- HERE
con_loop:
push-ax
...
爆斧
公司
...
int 10h

pop ax您需要额外的推动。即使AX不是输出寄存器,也不应信任BIOS/DOS/其他人保留AX

 test    al,0Fh
 jnz     con_loop
 push    ax        ;You forgot this!!!
 mov     ah,2
 inc     dh
 xor     dl,dl
 int     10h
 pop     ax
con_loop: