【问题标题】:Include Files for MASM包含 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,但这也不起作用。

【问题讨论】:

    标签: visual-studio assembly masm


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多