最近、アセンブリでstdoutに書き込む方法を理解しましたが、stdinからの読み取り、および読み取ったものをstdoutに出力するのに問題があります。これは私がこれまでに持っているコードです:
.386
.model flat, stdcall
WriteFile PROTO STDCALL:DWORD, :PTR, :DWORD, :PTR DWORD, :PTR OVERLAPPED
ReadFile PROTO STDCALL:DWORD, :PTR, :DWORD, :PTR DWORD, :PTR OVERLAPPED
GetStdHandle PROTO STDCALL:DWORD
.data
.data?
input DW ?
input_size DD ?
read DD ?
.code
main:
INVOKE GetStdHandle, -10
INVOKE ReadFile, eax, OFFSET input, input_size, read, 0
INVOKE GetStdHandle, -11
INVOKE WriteFile, eax, OFFSET input, OFFSET input_size, read, 0
RET
END main
私はそれを間違って読んでいるとかなり確信しています。私はかなり確信してinput_size
おりread
、期待どおりに動作していません(これに置き換えるinput_size
とnumber
時空が表示されますnumber
)。これが問題の原因になっています(入力を入力してreturnキーを押すと、何も表示されません)。
私はかなり長い間これをいじくり回してきました、そしてどんな助けでもありがたいです。(私はこれが宿題ではないことを学ぶためだけにこれを行っています)。
私の質問は本質的に私が間違っていることは何ですか?