NASM, or the Netwide Assembler, is an open-source assembler for x86 CPUs.  Why is this important?  NASM is a prerequisite for building with EDKII, and also popular in many other contexts.

NASM has an amazing legacy, dating back to 1996.  Having started off as a modest hobbyist project, today it is arguably the most important x86 assembler.  In bygone days of yore, BIOS engineers used either the Microsoft Macro Assembler (MASM), or the Borland Turbo Assembler (TASM).  However, both those two programs were discontinued many years ago, and both were quite expensive.  NASM filled the vacuum left by Microsoft discontinuing MASM* and Borland going out of business, and rode the wave of growth in popularity of open-source software to its current level of prominence.

*MASM exists today as part of Visual Studio, but is discontinued as a stand-alone product

NASM supports Intel-style syntax, rather than the AT&T-style. It supports a range of object file formats, including Linux and BSD a.out, ELF, Mach-O, 16-bit and 32-bit .obj (OMF) format, and COFF (including its Win32 and Win64 variants.).  A NASM "installation" is simply two files:  nasm.exe, the assembler, and ndisasm.exe, the disassembler; just stick them anywhere in your %PATH% and you're ready to go.  NASM runs on Win64, Win32, Linux, MacOS, and MS-DOS.  (yes, MS-DOS!)

The original developers have long since moved on, and now NASM is maintained by Mr. H. Peter Anvin and a small team.  NASM has several mailing lists to which you can subscribe, and you can file bugs in the team's Bugzilla.  There is ample documentation, and an active discussion forum.  The code for the project is on GitHub:

Wikibooks has some good "hello, world" examples.  Finally, you can type nasm --help for command-line help.

I hope you found this short introduction helpful.  NASM is definitely a tool with which you want to keep familiar.

Post a Comment

Be sure to select an account profile (e.g. Google, OpenID, etc.) before typing your comment!