The Netwide Assembler, NASM, is an 80x86 assembler designed for portability
and modularity. It supports a range of object file formats, including Linux
and NetBSD/FreeBSD a.out, ELF, COFF, Microsoft 16-bit OBJ and Win32. It
will also output plain binary files. Its syntax is designed to be simple
and easy to understand, similar to Intel's but less complex. It supports
Pentium, P6, MMX, 3DNow!, SSE and SSE2 opcodes, and has macro capability.