Windows汇编helloworld,使用NASM编译和链接的方法

NASM全称The Netwide Assembler,是一款基于80x86和x86-64平台的汇编语言编译程序,其设计初衷是为了实现编译器程序跨平台和模块化的特性。NASM是汇编语言编译程序,只能编译程序。不能链接。如果需要在windows中运行,还需要找个链接器制作exe或者dll。

win10系统汇编hello world的Demo如下,把下面文件保存为hello.asm。

extern printf
SECTION .data
	msg db 'Hello World! This is a test.', 0Ah 
 
SECTION .text
global main
 
main:
	push msg
	call printf
	add esp, 4
	ret

把nasm拷贝到hello.asm同目录,再用nasm把汇编编译成win32程序,

注:--prefix 是把所有函数名前加上下划线,这是window的要求。

nasm.exe -f win32 hello.asm --prefix _ -o hello.obj

在打开vs的的命令行Command Prompt,执行如下命令。

注:使用需要使用32位的命令行,因为nasm生成的是32位程序,所以link也要32位的。我使用vs2022的64位cmd一直提示错误,链接不上。vs2013的cmd一次成功。

link /subsystem:console /defaultlib:msvcrt.lib /entry:main hello.obj /out:hello.exe

汇编调用的printf使用了c语言的库msvcrt.lib,如果没有这个库文件须要下载这个库文件。https://download.csdn.net/download/GetDC/87473394

保存到电脑“D:\projectpath"\msvcrt.lib”。命令行改为如下,即可链接

link /subsystem:console /defaultlib:"D:\"projectpath"\msvcrt.lib" /entry:main hello.obj /out:hello.exe

网上还可以查到其他各种链接器。但windows下安装vs最方便。link是比较好的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值