私は2つの入力を受け取り、それらを出力するこのプログラムを作成しました(単純です、はい、しかしそれは練習用です)。コンパイルして正常に動作しますが、意図したとおりに動作しません。これが私のコードです:
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
.data
num1 db "Enter a number:", 0
num2 db "Enter another number:", 0
.data?
buffer1 dd 100 dup(?)
buffer2 dd 100 dup(?)
.code
start:
lea eax, num1
push eax
call StdOut
lea ebx, buffer1
push ebx
call StdIn
hlt
lea eax, num2
push eax
call StdOut
lea edx, buffer2
push edx
call StdIn
xor eax, eax
xor ebx, ebx
xor edx, edx
lea eax, buffer1
push eax
call StdOut
lea ebx, buffer2
push ebx
call StdOut
push 0
call ExitProcess
end start
次の出力が表示されます。
Enter a number: Enter another number:
それはするべきです:
Enter a number:
; wait for input.
Enter another number:
; wait for input.
; continue with program.
なぜ1行に印刷されるのですか?halt
プロセスを停止するためにそこに入れようとしましたが、Windowsはプログラムの実行を停止し、と言いthe program is not responding
ます。
編集:
これが私が編集すると言ったコードです:
xor eax, eax
xor ebx, ebx
xor edx, edx
lea eax, buffer1
push eax
call StdOut
lea ebx, buffer2
push ebx
call StdOut
前のコードでこれを実行すると、"This program is not responding."
なぜこれなのかと表示されます。
どんな助けでもいただければ幸いです。
よろしく、
プログラム