因此,看起来如何使用MASM多年来已经改变了大约50次因为我找到了大量的答案,而不是其中一个有效。
我想知道的是你如何在MASM上调用exitprocess之类的东西?我包含哪些文件/它们在哪里?我正在使用VS2015 Community Edition中内置的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,这也行不通。
答案 0 :(得分:3)
希望有人有更好的答案,但我通过从这个网站安装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的函数原型,它将起作用。包含文件可以为您节省自己输入原型的工作,因此请尽可能使用它们。
topic
但我可以轻松删除包含:
.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