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

我的系统上安装了NASMDev-CppDev-cpp带有LD (GNU Linker)。 我是新来的汇编代码和从汇编程序文件创build一个32位Windows可执行文件的过程。 我试着用这个:

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

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

你似乎不存在的意见之一确实提到你在Windows上安装了Dev-Cpp 。 如果你的路径上有Dev-Cpp的 MinGW bin目录,那么你可以使用GNU Linker LD

我不知道你是否在使用Dev-Cpp的32位或者64位的GCC,但是这对于生成一个32位的可执行文件都是有效的:

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

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

或者,您可以下载GoLink链接器 。 一旦你把它提取到你的路径上,你可以做一些事情:

 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