Winapi x86程序集创建Win32可执行文件NASM

Winapi x86程序集创建Win32可执行文件NASM,winapi,assembly,nasm,Winapi,Assembly,Nasm,我想创建一个有效的Win32可执行文件,可以作为独立应用程序运行 例如,这个简单的程序: bits 32 mov eax,1 ret 我使用NASM和 nasm test.asm -o test.exe 然后我运行了那个程序。 它启动了NTVDM,它告诉我“NTVDM CPU遇到了非法指令”和一些技术细节,可能是转储和寄存器 所以,我想用汇编语言创建一个独立的Win32应用程序。我不想像在DOS中那样创建COM文件 [section] .text global _start _sta

我想创建一个有效的Win32可执行文件,可以作为独立应用程序运行

例如,这个简单的程序:

bits 32
mov eax,1
ret
我使用NASM和

nasm test.asm -o test.exe
然后我运行了那个程序。 它启动了NTVDM,它告诉我“NTVDM CPU遇到了非法指令”和一些技术细节,可能是转储和寄存器

所以,我想用汇编语言创建一个独立的Win32应用程序。我不想像在DOS中那样创建COM文件

[section] .text
    global _start
_start:
    mov eax, 1
    ret
可以这样组装:

 nasm -fwin32 file.asm              (this should give you file.obj)

(或)

您选择的任何链接器都应该为您提供.exe

可以这样组装:

 nasm -fwin32 file.asm              (this should give you file.obj)

(或)


您选择的任何链接器都应该为您提供.exe文件,至少Windows XP拒绝加载不使用任何DLL文件的应用程序。到目前为止,我还没有用Windows7进行测试


原因是,除了Windows附带的DLL之外,没有正式的接口,而且一个既没有输入也没有输出的程序毫无意义。

至少Windows XP拒绝加载不使用任何DLL文件的应用程序。到目前为止,我还没有用Windows7进行测试


原因是,除了Windows附带的DLL之外,没有正式的界面,而且一个既没有输入也没有输出的程序毫无意义。

您可能需要阅读教程。要解决您的特定问题,您需要一个能够生成PE映像的链接器。请参阅是否尝试选择适合您的操作系统的输出格式?例如,
-f win32
切换以创建Windows的可链接对象文件。还有另一个示例:可能重复您可能需要阅读教程。要解决您的特定问题,您需要一个能够生成PE映像的链接器。请参阅是否尝试选择适合您的操作系统的输出格式?例如,
-f win32
开关为Windows创建可链接的对象文件。还有另一个例子:可能的
 ld -e _start file.obj