我创建了一个名为t.exe的masm程序,它应该从cmd读取输入并输出它。我知道这可能是另一种方法,但我想用“`Readconsole”来实现
“这是密码:
.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
include \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib
STD_INPUT_HANDLE EQU -10
.data?
ByteAry dd 8 dup (?)
var dd ?
.code
start:
invoke GetStdHandle, STD_INPUT_HANDLE
invoke ReadConsole,eax,offset ByteAry,sizeof ByteAry,offset var,0
invoke StdOut,ByteAry
invoke ExitProcess,0
end start我试着运行它,但我得到了一个微软错误和程序退出("t.exe遇到了一个问题,需要关闭。我们很抱歉给您带来不便“)。事实上,如果有人知道一本好书要从masm开始..。我需要它,因为我挣扎的数据类型,请不要冒犯评论:)
发布于 2012-11-10 19:45:33
使用WinAPI函数ReadConsole和WriteConsole的代码:
.586
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
includeLib kernel32.lib
.data
.data?
consoleOutHandle dd ?
consoleInHandle dd ?
bytearray db 32 dup(?)
ReadWritten dd ?
.code
start:
push STD_OUTPUT_HANDLE
call GetStdHandle
mov consoleOutHandle, eax
push STD_INPUT_HANDLE
call GetStdHandle
mov consoleInHandle, eax
push 0
push offset ReadWritten
push sizeof bytearray
push offset bytearray
push consoleInHandle
call ReadConsole
push 0
push offset ReadWritten
push sizeof bytearray
push offset bytearray
push consoleOutHandle
call WriteConsole
push 0
call ExitProcess
end starthttps://stackoverflow.com/questions/9895966
复制相似问题