如何组装和链接.asm文件到Win32可执行文件?

时间:2015-12-26 00:34:22

标签: windows assembly linker nasm 32-bit

我的系统上安装了 NASM Dev-Cpp Dev-cpp 附带 LD (GNU Linker)。我不熟悉汇编代码和从汇编程序文件创建32位Windows可执行文件的过程。我试过用这个:

nasm -f win32 ass.asm
nasm -o ass ass.o

我没有成功使用这些命令来创建可执行文件。什么是组装(使用 NASM )和链接生成可在32位Windows上运行的可执行文件的正确方法?

1 个答案:

答案 0 :(得分:3)

您的一条评论似乎不再存在确实提到您在Windows上安装了 Dev-Cpp 。如果您的路径上有 Dev-Cpp MinGW bin目录,则可以使用GNU链接器 LD

我不知道您是否使用32位或64位GCC与 Dev-Cpp ,但这应该适用于生成32位可执行文件:

nasm -f win32 ass.asm -o ass.obj
ld -mi386pe -o ass.exe ass.obj

这将告诉NASM生成32位Win32对象, LD 将该对象链接到i386pe 32位Windows可执行文件。

或者您可以下载GoLink linker。将其提取到路径后,您可以执行以下操作:

nasm -f win32 ass.asm -o ass.obj
GoLink.exe  /console ass.obj kernel32.dll user32.dll gdi32.dll 

您可能必须使用以下内容指定代码入口点(标签):

GoLink.exe  /console /entry _start ass.obj kernel32.dll user32.dll gdi32.dll 

_start可能是您希望程序启动的标签。如果您没有调用任何Win32 API,则不需要列出任何DLL。

如果您没有创建控制台应用程序,则可以不使用/console