【发布时间】:2012-06-13 17:47:36
【问题描述】:
.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc
includelib user32.lib
includelib kernel32.lib
Main proto
.data
hOutput dd 0
bReadWritten dd 0
szText1 db "What's your name?",0
hInput dd 0
szInput db 128 dup(0)
.data?
.code
start:
Invoke Main
Invoke ExitProcess,0
Main proc
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov hOutput, eax
invoke GetStdHandle,STD_INPUT_HANDLE
mov hInput, eax
invoke lstrlen, addr szText1
invoke WriteFile, hOutput, addr szText1, eax, ADDR bReadWritten, NULL
invoke ReadFile, hInput, addr szInput, 128, ADDR bReadWritten,0
ret
Main endp
end start
执行此程序后没有任何反应。为什么没有出现控制台窗口?
后记
组装选项(winAsm):
/Zi /Zd /c /coff /Cp /nologo
链接器选项
/SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV /VERSION:4.0 /INCREMENTAL:NO
【问题讨论】:
-
什么汇编程序?你链接了吗?
-
winAsm ,我按下了“Go All”按钮
-
这是一个链接器问题,您没有正确指定/SUBSYSTEM。
-
我在后记中列出的选项中的值是默认值。 @Hans Passant 你确定吗?
标签: windows assembly console x86