首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >包含MASM文件

包含MASM文件
EN

Stack Overflow用户
提问于 2017-01-28 21:50:05
回答 1查看 7.5K关注 0票数 5

因此,看起来如何使用MASM已经改变了大约50倍,多年来,因为我发现了大量的答案,但其中没有一个有效。

我想知道的是,您是如何在MASM上调用类似exitprocess的?我包括哪些文件?它们在哪里?我正在使用内置到ml.exe社区版中的VS2015。我的根驱动器或VS上都没有MASM文件夹。VS没有附带任何.inc文件(我对驱动器进行了详尽的搜索)。我只想做些简单的事情:

代码语言:javascript
运行
复制
.386
.model flat, stdcall 
option casemap:none 
includelib ?????????????
include ?????????????
.data 
.code 
start: 
    invoke ExitProcess,0 
end start

我试过只包括msvcrt.lib,但这也不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-28 21:57:22

希望有人有一个更好的答案,但我修正了通过安装MASM从这个网站。它将masm32文件夹放置在根目录中(对于大多数人来说,C:\)

http://www.masm32.com/download.htm

编辑:而且,.inc文件只是一堆函数原型。因此,您可以简单地原型任何您想要的功能,然后使用includelib调用它。

http://win32assembly.programminghorizon.com/tut2.html

在上面的示例中,我们调用了kernel32.dll导出的函数,因此需要包含kernel32.dll中的函数原型。该文件为kernel32.inc。如果使用文本编辑器打开它,您将看到它充满了内核32.dll的函数原型。如果不包括kernel32.inc,仍然可以调用ExitProcess,但只能使用简单的调用语法。您将无法调用该函数。这里的要点是:为了调用一个函数,您必须将它的函数原型放在源代码的某个地方。在上面的示例中,如果不包括kernel32.inc,那么可以在invoke命令的源代码中的任何位置为ExitProcess定义函数原型,它将工作。include文件是为了节省您自己键入原型的工作,所以您可以随时使用它们。

代码语言:javascript
运行
复制
.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

但我也可以很容易地删除这些内容:

代码语言:javascript
运行
复制
.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
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41915222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档