NASM(Netwide Assembler)

详细功能说明

  • 语法体系:采用清晰的Intel语法,与CPU指令集原生适配,相较于AT&T语法更贴近自然语言,降低入门门槛。
  • 跨平台适配:完美支持Windows(32/64位)、Linux、MacOS三大主流系统,生成的目标文件可在对应平台直接运行。
  • 输出格式丰富:支持ELF(Linux/Mac可执行格式)、PE(Windows可执行格式)、COFF(通用目标文件格式)等多种格式,适配操作系统开发、应用程序底层编写等不同场景。
  • 宏指令支持:具备强大的宏定义功能,可自定义重复指令片段,简化复杂代码编写,提升开发效率。
  • 文档与生态:官方提供完整的用户手册(含语法详解、指令参考),社区资源丰富,入门教程、问题解决方案易获取。

使用方法说明

(1)环境搭建步骤
  • Windows系统:① 访问官方下载页获取最新安装包(如nasm-2.16.01-installer.exe);② 双击安装,建议勾选“Add NASM to system PATH”(若未勾选,需手动配置:右键“此电脑”→属性→高级系统设置→环境变量→系统变量→PATH→编辑,添加NASM安装目录,如“C:\nasm”);③ 验证:打开命令提示符,输入nasm -v,显示版本信息即配置成功。
  • Linux/MacOS系统:① 下载对应系统的压缩包(如nasm-2.16.01.tar.gz);② 解压:tar -zxvf nasm-2.16.01.tar.gz;③ 编译安装:进入解压目录,依次执行./configuremakesudo make install;④ 验证:终端输入nasm -v,显示版本信息即可。
(2)基础使用流程(以Windows编写“Hello World”为例)
  • 编写代码:用文本编辑器(如VS Code)新建文件hello.asm,输入以下代码:
  • section .data
  • msg db 'Hello, World!', 0xA ; 定义字符串,0xA为换行符
  • len equ $ - msg ; 计算字符串长度

  • section .text
  • global _start

  • _start:
  • ; 系统调用sys_write
  • mov rax, 1 ; 系统调用号(1=写操作)
  • mov rdi, 1 ; 文件描述符(1=标准输出)
  • mov rsi, msg ; 字符串地址
  • mov rdx, len ; 字符串长度
  • syscall ; 发起系统调用

  • ; 系统调用sys_exit
  • mov rax, 60 ; 系统调用号(60=退出)
  • mov rdi, 0 ; 退出状态码(0=正常)
  • syscall
  • 编译生成目标文件:命令提示符进入代码目录,输入nasm -f win64 hello.asm -o hello.o(-f指定输出格式,win64对应64位Windows)。
  • 链接生成可执行文件:需借助MinGW-w64的gcc工具,输入gcc hello.o -o hello.exe
  • 运行:输入hello.exe,终端输出“Hello, World!”即成功。

下载地址

官方网站:https://www.nasm.us/(首页导航栏“Download”板块,选择对应系统的最新版本安装包/压缩包)