Debugging 在使用DOSBox时,如果我尝试使用调试器运行代码,它会工作,而不使用调试器,我的代码不会运行?

Debugging 在使用DOSBox时,如果我尝试使用调试器运行代码,它会工作,而不使用调试器,我的代码不会运行?,debugging,assembly,x86,masm,x86-16,Debugging,Assembly,X86,Masm,X86 16,在使用DOSBox时,如果我尝试使用调试器运行代码,它会工作,而不使用调试器,我的代码不会像使用debugx时那样运行和执行。为什么会发生这种情况 问题是: 编写一个ALP,该ALP将接受单个用户输入的介于(0-9)之间的数字。如果用户输入5,则文件tab.txt中的第5个字符必须与文件lab.txt中的第5个字符交换。文件的大小是可变的,但肯定大于10字节。用户输入不得显示在屏幕上 一个明显的错误是mov-dx,[si]正在加载2个字节,但您只有1个。谢谢您,终于可以解决它了,但没有意识到错误

在使用DOSBox时,如果我尝试使用调试器运行代码,它会工作,而不使用调试器,我的代码不会像使用debugx时那样运行和执行。为什么会发生这种情况

问题是:

编写一个ALP,该ALP将接受单个用户输入的介于(0-9)之间的数字。如果用户输入5,则文件tab.txt中的第5个字符必须与文件lab.txt中的第5个字符交换。文件的大小是可变的,但肯定大于10字节。用户输入不得显示在屏幕上


一个明显的错误是
mov-dx,[si]
正在加载2个字节,但您只有1个。谢谢您,终于可以解决它了,但没有意识到错误
.model tiny
.486
.data

 file db 'lab.txt',0
 handle dw ?
 buffer db 1 dup(?)
 fil db 'tab.txt',0
 han dw ?
 buffer1 db 1 dup(?)
 imp db ?
 .code
 .startup

lea si,imp
mov ah,08h
int 21h
and al,0fh
dec al
mov [si],al

mov ah,3dh
mov al,2
lea dx,file
int 21h
mov handle,ax

mov ah,3dh
mov al,2
lea dx,fil
int 21h
mov han,ax

mov al,0
mov bx,handle
mov cx,0
mov dx,[si]
mov ah,42h
int 21h

mov al,0
mov bx,han
mov cx,0
mov dx,[si]
mov ah,42h
int 21h

mov     ah,03fh
mov     bx,handle
mov     cx,1
lea     dx,buffer
int     21h
mov     ah,03fh
mov     bx,han
mov     cx,1
lea     dx,buffer1
int     21h

mov al,0
mov bx,handle
mov cx,0
mov dx,[si]
mov ah,42h
int 21h

mov al,0
mov bx,han
mov cx,0
mov dx,[si]
mov ah,42h
int 21h

mov     ah,40h
mov     bx,handle
mov     cx,1
lea     dx,buffer1
int     21h

mov     ah,40h
mov     bx,han
mov     cx,1
lea     dx,buffer
int     21h


mov     bx,handle
mov     ah,03eh
int     21h
mov     bx,han
mov     ah,03eh
int     21h

.exit
 end