如果我在调试中逐行输入以下脚本可以正常工作。当我将它复制到一个名为script.txt的文件时,它会在“输入3个数字”后挂断。我像这样运行它:
D:> debug< script.txt
文件是:
a
mov cx, 3
jmp 0119
db 0d,0a,"enter 3 numbers",0d,0a,"$"
mov dx, 0105
mov ah, 09
int 21h
mov ah, 01
int 21h
and al, 0f
add bl, al
mov dl, 0a
mov ah, 02
int 21h
loop 0120
jmp 013a
db 0d,0a,"sum: ","$"
mov dx,0132
mov ah, 09
int 21h
or bl, 30
mov dl, bl
mov ah, 02
int 21h
mov ax, 4c00
int 21h
g
我做错了什么?任何提示或链接赞赏。
基思
答案 0 :(得分:5)
您将输入重定向到debug来自脚本,而不是来自控制台,因此调试永远不会接收您的击键程序挂起,等待更多数据从脚本进入。
如果你在脚本中的'g'之后放了3个数字,它应该继续
答案 1 :(得分:2)
您告诉调试从script.txt获取所有输入,因此当您的程序尝试从标准输入读取数字时,它会从文件读取,而不是从控制台读取。
答案 2 :(得分:0)
a
mov cx, 3
jmp 0119
db 0d,0a,"enter 3 numbers",0d,0a,"$"
mov dx, 0105
mov ah, 09
int 21h
mov ah, 0 ; for console input
int 16h ; use int 16h function 0.
mov dl,al ; echo input to screen
mov ah,02
int 21h
and al, 0f
add bl, al
mov dl, 0a
mov ah, 02
int 21h
loop 0120
jmp 0140
db 0d,0a,"sum: ","$"
mov dx,0138
mov ah, 09
int 21h
or bl, 30
mov dl, bl
mov ah, 02
int 21h
mov ax, 4c00
int 21h
g
答案 3 :(得分:0)
enter 3 numbers
9 7 9
总和:9
找你的程序不工作......也许需要使用堆栈,而不是regs。