Debugging 当我单步执行某个程序时,它会在Turbo Debugger中工作,但当我在TD或DOS中运行它时,它会停止并按Ctrl+;Alt+;删除成为唯一的选项
该程序旨在使用biosint10h显示char表,它可以这样做,但只有当我在td中一步一步地通过它时。我认为在调试器中未初始化的寄存器可能包含零,但在运行时它们可能包含垃圾,因此我将mov ax,0003h替换为mov al,3,并添加了xor dx,dx;但它也不起作用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
.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: