Gra*_*ell 2 assembly masm visual-studio
因此,这些年来如何使用 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
Run Code Online (Sandbox Code Playgroud)
我试过只包含 msvcrt.lib 但这也不起作用。
希望有人有更好的答案,但我通过从该站点安装 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
Run Code Online (Sandbox Code Playgroud)
但我可以很容易地删除包括:
.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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5722 次 |
| 最近记录: |