【问题标题】:x86 assembly create Win32 executable NASMx86 程序集创建 Win32 可执行 NASM
【发布时间】:2013-09-17 05:27:11
【问题描述】:

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

例如这个简单的程序:

bits 32
mov eax,1
ret

我使用 NASM 编译它

nasm test.asm -o test.exe

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

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

【问题讨论】:

标签: winapi assembly nasm


【解决方案1】:
[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

【讨论】:

    【解决方案2】:

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

    原因是没有官方接口,只有 Windows 自带的 DLL,一个既没有输入也没有输出的程序没有意义。

    【讨论】:

      猜你喜欢
      • 2015-09-20
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 2011-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多