2
我正在嘗試使用Win32 API在程序集中編寫一個簡單的命令行程序。我寫了以下內容,編譯並鏈接了零錯誤或警告,並從命令行啓動它,但在命令提示符處沒有任何內容出現。任何人都可以看到什麼是錯的,或者什麼會讓它說「Hello World!」在命令行?該程序:Win32 ASM程序不向命令行輸出任何內容
; 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
你試過調試嗎?你發現了什麼? – tenfour 2013-03-20 16:45:35
你傳遞給'WriteConsole'的參數是錯誤的。第一個參數應該是控制檯輸出緩衝區的句柄,第四個參數應該是指向寫入的字符數量的指針(您正在傳遞值)。 – user786653 2013-03-20 17:02:29
我將該行更改爲'調用WriteConsole,STD_OUTPUT_HANDLE,addr szMsg,nNumToWrite,addr numwritten,NULL'但仍然沒有快樂。 – mring 2013-03-20 17:19:30