assembly 如何在Windows中对程序集使用系统调用

u5rb5r59  于 5个月前  发布在  Windows
关注(0)|答案(1)|浏览(79)

我试图在Windows上使用汇编进行编程,但这是一个巨大的痛苦,我试图制作一个简单的程序,当它完成时返回一个退出代码,但(与Linux相反)没有关于Windows系统调用代码的文档。
因此,我直接去研究如何做到这一点,但几乎没有关于它的信息,我读到为了制作这个系统调用,我需要包括来自库的函数,比如:kernel 32或User 32,但我不能将它们链接到我的程序中,因为所有这些库都是.dll而不是.lib/.a,链接器显然会向我抛出库不存在的错误,下一个代码是我从视频中一行一行复制的东西(在这个主题中唯一出现的是这个视频):

global _main
extern _MessageBoxA@16

section .text

_main:
    push 0
    push 0
    push hello
    push 0
    call _MessageBoxA@16

hello:
    db "Hello, World", 0

字符串
所有这些都使用NASM汇编程序和Visual Studio生成工具环境中的下一个命令 “vcvars 32”**:“link/entry:main /subsystem:windows main.obj user32.lib”**
这就是我所尝试的,我需要知道如何链接这些库,如何从它们导入函数,如何生成系统调用。所有这些只是为了给一个没有功能的程序生成退出代码(或者在上面的代码的情况下创建一个消息框)。

yeotifhr

yeotifhr1#

解决方案是下载SDK并从那里获取库。

相关问题