我想创建一个有效的 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)
和
link /subsystem:windows /entry:start file.obj
(或者)
ld -e _start file.obj
您选择的任何链接器都应该为您提供 .exe
至少 Windows XP 拒绝加载不使用任何 DLL 文件的应用程序。到目前为止,我还没有使用 Windows 7 进行测试!
原因是没有官方接口,只有 Windows 附带的 DLL,并且没有输入和输出的程序没有意义。