ASM: MASM, NASM, FASM?

28,803

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.

Share:
28,803

Related videos on Youtube

user997112
Author by

user997112

Updated on July 09, 2022

Comments

  • user997112
    user997112 almost 2 years

    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.

    • Paul R
      Paul R about 12 years
      Depends somewhat on your preferred OS - Windows ? Linux ? Mac OS X ? Other ?
    • Aristides
      Aristides over 7 years
      What would be used for Mac OS X?
  • stmax
    stmax about 12 years
    NASM is also available for Windows.
  • user997112
    user997112 about 12 years
    Thanks Pavan. Are there any differences in the syntax?
  • Pavan Manjunath
    Pavan Manjunath about 12 years
    @user997112 Yes. Read the differences between MASM and NASM here
  • Daniel Kamil Kozar
    Daniel Kamil Kozar about 12 years
    NASM also supports 16 bit assembly, which is why I love it so much. :)
  • Paul R
    Paul R about 12 years
    NASM is also available on Mac OS X (and probably other platforms too)
  • Matt
    Matt almost 12 years
    I personally would like to put a good word in for FASM. It is so extensible it doesn't actually have to be limited to any of the architectures listed. For example you can use it as a fully working DCPU-16 assembler using macros.
  • beta
    beta almost 12 years
    Personally, I prefer FASM. As far as I know it can be used as a 16-bit assembler as well (originally it only ran in 16-bit flat real mode). I've also seen a DOS clone written in FASM. +1 for the good answer either way.
  • Lartu
    Lartu over 5 years
    Sorry to interject six years later, but FASM does indeed assemble for 16-bit Intel x86.
  • rxantos
    rxantos over 2 years
    Even later. But there is also JWASM which uses the MASM syntax is nice because it has the same macros in 64 bit than in 32 bit. Meanwhile ML64 is very barebones when compared to its 32 bit counterpart. No .if, .else, .endif in ML64.EXE. (which ML.EXE does have)