本文简单介绍以下Windows平台NASM汇编环境的搭建。

1. NASM汇编语言环境搭建

汇编语言有Intel格式AT&T格式。Windows平台Intel格式最常用的两种汇编工具是: MASM和NASM。

  • MASM:MASM是Microsoft Macro Assembler的缩写,是微软公司为x86微处理器家族开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm,是Windows下开发汇编的利器。

    ps: MASM是为数不多的微软开发工具之一,没有单独的16位和32位版本。 汇编程序为程序员提供了额外的性能,这是一种基于性能的解决方案的三管齐下方法。显然MASM是微软自己的独有的,不开源,且只能用于Windows平台。

  • NASM全称为Netwide Assembler ,是一款基于x86架构的汇编与反汇编软件。它可以用来编写16位(8086、80286等)、32位(IA-32)和64位(x86_64)的程序。 NASM被认为是Linux平台上最受欢迎的汇编工具之一。

1.1 NASM汇编相关资料

国内NASM的学习资料很少,下面这本适合入门。

1) 汇编语言程序设计

汇编语言程序设计

2) x86汇编语言

如下这本则是一个深入NASM的神书,豆瓣评分高达9.1,此书教你如何直接控制硬件,在不借助于BIOS、DOS、Windows、Linux或者任何其他软件支持的情况下来显示字符、读取硬盘数据、控制其他硬件等。

x86汇编语言

ps: 李忠的书甚至可以媲美如下这个评分高达9.7的神书——王爽的《汇编语言》。当然,王爽的书基于MASM,不少内容也过于陈旧,只能作为我的参考了

3) 汇编语言

汇编语言

1.2 NASM环境搭建过程

NASM官网下载,当前NASM的stable版本是2.16.01,选择其中的win32或者win64版本即可。

比如我把下载的文件解压缩到如下目录:D:\C\nasm-2.15.05-win32

然后添加该路径到Path环境变量,这样nasm环境就搭建好了。

下面是万年不变的hello world来了:

; Hello World Program 
extern _printf
SECTION .data
 msg db 'Hello World!', 0Ah ; assign msg variable with your message string
 
SECTION .text
global _main
 
_main:
 push msg
 call _printf
 add esp, 4
 ret

把以上代码保存为demo.asm,然后在cmd下输入如下指令,输出了“Hello world!”

汇编环境搭建

这里nasm把.asm汇编程序做成.obj文件。然后用gcc就可以制作exe文件。当然,制作exe还有很多种其他方式,这里选择gcc的优势是:当有dll时,我可以直接依赖dll,而不需要lib文件。就这一个优势,就秒杀了其它一众软件。



[参看]

  1. 汇编语言基本概念
  2. Windows平台NASM汇编语言环境搭建
  3. nasm手写汇编指南
  4. bilibili汇编语言
  5. NASM汇编语法和环境搭建
  6. nasm在Linux环境下的使用方法