ASM: MASM, NASM, FASM?

assembly, fasm, intel, masm, nasm

Solution

`MASM` (Microsoft Assembler) is the popular assembler for Windows. `MASM` is for 16-bit and 32-bit applications(`x86`). `ML64` is the one for 64 bit sources (`AMD64/x86-64`)

`NASM` (Netwide Assembler) is the popular assembler for Linux but is available on Windows too. NASM supports 16-bit, 32 bit and 64 bit programs.

`FASM` (Flat Assembler) is available for both Windows and Linux. FASM too supports both 32-bit and 64-bit programs.

So I guess you would prefer choosing `MASM` according to your requirements.

Problem

I have done ARM assembly programming and I would like to learn the Intel Assembler. I keep hearing all these different F/M/N/ASMs mentioned- but I am unsure how they related to what I wish to achieve? Could somebody please help me identify what I would need to learn how to program low level on the Intel architecture? I dont quite understand how the "different Assemblers" correlate, even more so with x86, IA64, AMD64/x86-64 etc? If it is of any help, I am most comfortable with Eclipse and Visual Studio 08/10 IDEs.

Original source