包含 MASM 的文件
Posted
技术标签:
【中文标题】包含 MASM 的文件【英文标题】:Include Files for MASM 【发布时间】:2017-01-28 21:50:05 【问题描述】:因此,这些年来如何使用 MASM 似乎已经改变了大约 50 次,因为我发现了大量的答案,但没有一个有效。
我想知道的是,您如何在 MASM 上调用诸如 exitprocess 之类的东西?我包括哪些文件/它们在哪里?我正在使用 VS2015 社区版中内置的 ml.exe。我的根驱动器或 VS 上都没有 MASM 文件夹。 VS 不附带任何 .inc 文件(我在驱动器上进行了详尽的搜索)。我只想做一些简单的事情:
.386
.model flat, stdcall
option casemap:none
includelib ?????????????
include ?????????????
.data
.code
start:
invoke ExitProcess,0
end start
我尝试只包含 msvcrt.lib,但这也不起作用。
【问题讨论】:
【参考方案1】:希望有人有更好的答案,但我通过从该站点安装 MASM 解决了问题。它将 masm32 文件夹放在根目录(我们大多数人是 C:\)
http://www.masm32.com/download.htm
编辑:另外,.inc 文件只是一堆函数原型。所以你可以对任何你想要的函数进行原型化,然后使用 includelib 来调用它。
http://win32assembly.programminghorizon.com/tut2.html
在上面的示例中,我们调用了 kernel32.dll 导出的函数,因此我们需要包含 kernel32.dll 中的函数原型。该文件是 kernel32.inc。如果你用文本编辑器打开它,你会看到它充满了 kernel32.dll 的函数原型。如果您不包含 kernel32.inc,您仍然可以调用 ExitProcess,但只能使用简单的调用语法。您将无法调用该函数。这里的重点是:为了调用一个函数,你必须把它的函数原型放在源代码的某个地方。在上面的例子中,如果你不包含kernel32.inc,你可以在invoke命令上面的源代码中的任何地方定义ExitProcess的函数原型,它就会起作用。包含文件可以为您节省自己输入原型的工作,因此请尽可能使用它们。
.386
.model flat, stdcall
option casemap:none
include C:\masm32\include\windows.inc
include C:\masm32\include\kernel32.inc
includelib C:\masm32\lib\kernel32.lib
.data
.code
start:
invoke ExitProcess,0
end start
但我也可以轻松删除包含:
.386
.model flat, stdcall
option casemap:none
includelib C:\masm32\lib\kernel32.lib
.data
.code
start:
ExitProcess PROTO STDCALL :DWORD
invoke ExitProcess,0
end start
【讨论】:
以上是关于包含 MASM 的文件的主要内容,如果未能解决你的问题,请参考以下文章