FASM

It claims high speed, size optimizations, operating system (OS) portability, and macro abilities.

[3] It provides syntax features and macros, which make it possible to customize or create missing statements.

[3][7] An unusual FASM construct is defining procedures only if they are used somewhere in the code, something that in most languages is done per-object by the linker.

FASM is based on the "same source, same output" principle: the contents of the resulting file are not affected by the command line.

[7] Such an approach saves FASM sources from compiling problems often present in many assembly projects.

[3] Fresh, an internet community supported project started by John Found, is an integrated development environment for FASM.