我有以下來源,我在一個YouTube視頻教程有一個彙編程序:MASM32彙編程序無法正常運行
.386
.model flat, stdcall
option casemap:none
include c:\masm32\include\windows.inc
include c:\masm32\include\masm32.inc
include c:\masm32\include\kernel32.inc
includelib c:\masm32\lib\masm32.lib
includelib c:\masm32\lib\kernel32.lib
.data
message1 db "Type your name: ", 0
message2 db "Your name is ", 0
.data?
buffer db 100 dup(?)
.code
start:
invoke StdOut, addr message1
invoke StdIn, addr buffer, 100
invoke StdOut, addr message2
invoke StdOut, addr buffer
invoke StdIn, addr buffer, 100
invoke ExitProcess, 0
end start
我編譯程序用一個bat文件
ml /c /coff %1.asm
Link /SUBSYSTEM:WINDOWS %1.OBJ
我稱之爲bat文件assemble.bat,所以我調用匯編源代碼,它彙編了可執行文件。
問題是,當我運行程序(該程序安裝正常,沒有錯誤),該程序根本不做任何事情。我在控制檯提示符下調用它,它什麼也不做,程序只是顯示一個空白行並返回到命令提示符,就好像沒有任何事情發生一樣。
在視頻教程中,這個人組裝了他的程序並編譯並工作正常,但對於我來說沒有任何反應。
但我不想讀取或寫入文件。它旨在獲取和顯示控制檯中的數據。 – Victor 2011-06-14 21:53:15
@Victor:控制檯的手柄仍然像文件手柄一樣工作。您也可以*將它們傳遞給特殊的控制檯函數(例如,'ReadConsoleInput','WriteConsoleOutput'),但由於您只是想顯示簡單的文本而不關心更改文本顏色等內容,因此'ReadFile'/WriteFile'更容易。 – 2011-06-14 21:56:10
這裏的問題是代碼應該工作。它與視頻教程中的代碼相同,並且應該正在運行。你是說如果我使用ReadConsoleInput和WriteConsoleOutput,程序將按預期運行?如果是這樣,我該如何使用這個功能?該程序組裝好,但是當我運行它時沒有任何反應。 – Victor 2011-06-14 21:59:36