我有以下来源,我在一个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