запуск сценария отладки DOS - PullRequest
1 голос
/ 16 апреля 2009

следующий скрипт работает нормально, если я набираю его построчно в отладке. Когда я копирую его в файл с именем script.txt, он зависает после «ввода 3 цифр». Я запускаю это так:

D:> debug

файл:

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

что я делаю не так? Любые намеки или ссылки приветствуются. Кейта

Ответы [ 4 ]

5 голосов
/ 16 апреля 2009

Вы перенаправили ввод для отладки из сценария, а не из консоли, поэтому отладка никогда не получает нажатия клавиш. Программа зависает, ожидая получения дополнительных данных из сценария.

Если вы поставили 3 цифры после «g» в скрипте, оно должно продолжаться

2 голосов
/ 16 апреля 2009

Вы говорите отладчику, чтобы он брал весь свой ввод из script.txt, поэтому, когда ваша программа пытается прочитать числа из стандартного ввода, она читает из файла, а не из консоли.

0 голосов
/ 23 января 2011
enter 3 numbers

9 7 9

сумма: 9

Шов, ваша программа не работает ... возможно, нужно использовать стек, а не регистры.

0 голосов
/ 16 апреля 2009

хороших объяснений. Спасибо, Майкл , ваше предложение сработало, но я хочу получить информацию с консоли и по-прежнему запускать сценарий, поэтому мне не нужно вводить весь код, чтобы запустить его снова. Спасибо jdigital! , вот ответ, который я ищу. Используя ваши подсказки (в комментариях выше) мне удалось сделать простой рабочий скрипт:

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
...