The Netwide Assembler project provides cool i386 assembler, written in C, that should be modular enough to eventually support all known syntaxes and object formats.
http://www.nasm.us, http://sourceforge.net/projects/nasm/
Binary release on your usual metalab mirror in
devel/lang/asm/
directory. Should also be available as
.rpm
or .deb
in your usual Linux
distribution.
The syntax is Intel-style. Comprehensive macroprocessing support is integrated.
Supported object file formats are bin
,
aout
, coff
, elf
,
as86
, obj
(DOS), win32
,
rdf
(their own format).
NASM can be used as a backend for the free LCC compiler (support files included).
Unless you're using BCC as a 16-bit compiler (which is out of scope of this 32-bit HOWTO), you should definitely use NASM instead of say AS86 or MASM, because it runs on all platforms.
NASM comes with a disassembler, NDISASM.
Its hand-written parser makes it much faster than GAS, though of course, it doesn't support three bazillion different architectures. If you like Intel-style syntax, as opposed to GAS syntax, then it should be the assembler of choice...
Note: There are few programs which may help you to convert source code between AT&T and Intel assembler syntaxes; some of the are capable of performing conversion in both directions.