我最近想出了如何在汇编中写入标准输出,但现在无法从标准输入读取,并将我读回的内容输出到标准输出。这是我到目前为止的代码:
.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
用 a替换number
它会显示一个空间number
时间),这导致了我的问题(当我输入我的输入并点击返回时,它根本不显示任何内容)。
我已经为此摸索了很长一段时间,并希望得到任何帮助。(我这样做只是为了了解这不是家庭作业)。
我的问题本质上是我做错了什么?