我想使用writeconsole API在控制台输出中写入一个字符串,但是它不起作用
我在masm中使用控制台链接并构建它
这是代码
.386
.MODEL Flat,STDCALL
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
STD_OUTPUT_HANDLE EQU -11
.DATA
Msg db "Hello World",13,10,0
lmessage dd 13
.DATA?
consoleOutHandle dd ?
bytesWritten dd ?
.code
start:
INVOKE GetStdHandle, STD_OUTPUT_HANDLE
mov [consoleOutHandle],eax
invoke WriteConsole, consoleOutHandle,offset Msg,offset lmessage,offset bytesWritten,0
INVOKE ExitProcess,0
end start
当我运行exe输出时
我得到以下
C:\ masm32> 18.exe
C:\ masm32>
空输出
所以有什么建议
最佳答案
第三个参数是要写入的字符数,而不是要写入的字符数的地址。对您来说幸运的是,该地址超过64K,导致调用失败,错误代码为ERROR_NOT_ENOUGH_MEMORY。
关于winapi - 使用masm(汇编代码)向控制台编写简单的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864854/