1

次のスクリプトは、デバッグで1行ずつ入力すると正常に機能します。script.txtというファイルにコピーすると、「3つの数字を入力してください」とハングアップします。私はそれをそのように実行します:

D:>デバッグ<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

私は何が間違っているのですか?ヒントやリンクをいただければ幸いです。キース

4

4 に答える 4

5

入力をコンソールからではなくスクリプトからのデバッグにリダイレクトしたため、デバッグがキーストロークを受信することはありません。プログラムがハングし、スクリプトからさらにデータが届くのを待っています。

スクリプトの「g」の後に3つの数字を入力すると、続行する必要があります

于 2009-04-15T22:07:54.390 に答える
2

script.txtからすべての入力を取得するようにデバッグに指示しているため、プログラムが標準入力から数値を読み取ろうとすると、コンソールからではなくファイルから読み取られます。

于 2009-04-15T22:07:01.430 に答える
0
enter 3 numbers

9 7 9

合計:9

プログラムが機能していないことを確認してください...おそらく、regではなくstackを使用する必要があります。

于 2011-01-22T22:35:08.927 に答える
0

良い説明。 ありがとう Michael、あなたの提案はうまくいきましたが、コンソールから入力を取得してスクリプトを実行したいので、コード全体を入力して再度実行する必要はありません。 ありがとう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
于 2009-04-15T22:20:26.547 に答える