windows - Win32 ASM 程序不向命令行打印任何内容

标签 windows winapi assembly command-line x86

我正在尝试使用 Win32 API 在汇编语言中编写一个简单的命令行程序。我编写了以下内容,使其编译并链接为零错误或警告,并从命令行启动它,但命令提示符下什么也没有出现。任何人都可以看出哪里出了问题,或者是什么让它说“Hello World!”在命令行?程序:

; Block 1
.386
.model flat,stdcall
option casemap:none

; Block 2
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib

; Block 3
.data
szMsg db "Hello World!",0
nNumToWrite dd 12

; Block 4
.data?
numwritten dd ?
CommandLine LPSTR ?

; Block 5
.code
start:
invoke GetCommandLine
mov CommandLine,eax
invoke WriteConsole,CommandLine,addr szMsg,nNumToWrite,numwritten,NULL
xor eax,eax
invoke ExitProcess,eax
end start

最佳答案

您是将其链接为控制台程序还是 GUI 程序?这是 Win32 中可执行文件的属性。

关于windows - Win32 ASM 程序不向命令行打印任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15529592/

相关文章:

windows - vim - 如何在复制文本时保持光标位置

windows - 如何在 Windows 命令行中创建一个空的 .html 和 .js 文件?

windows - 如何获取参数列表?

c++ - Win32 消息泵,DispatchMessage() 是处理整个消息队列还是只处理顶部消息?

assembly - 如何让用户的十六进制输入在 x86 程序集(16 位 DOS)中打印为十进制?

assembly - 为什么 cmp 指令中的参数顺序很重要?

linux - 通过 linux x86-64 函数调用保留哪些寄存器

windows - "Can' t 读取文件“尝试在批处理文件中排除目录时

winapi - 如果应用程序崩溃,是否会在Windows上重置互斥锁?

c - 使用 GDI 的弹丸曲线