MASM: The Microsoft Macro Assembler

Without question, MASM is the world's most popular assembly language translator. There are many reasons for its popularity, though the fact that Microsoft produced it has a lot to do with this. Of course, MASM has been around for over two decades and has had lots of time to develop a huge following. It doesn't hurt that MASM is one of the most powerful and stable assemblers around. It also doesn't hurt that there are lots of on-line and off-line resources available for MASM.

The real question isn't "why is MASM so popular?" Rather, the question really is "why isn't everyone using MASM?" There are a couple of reasons:

  • Some people hate Microsoft and refuse to use code that isn't open source (and MASM is definitely "closed source."
  • MASM isn't the fastest assembler around (it's not particularly slow, except in a couple of degenerate cases, but there are faster assemblers available).
  • Though very powerful, there are a couple of assemblers that, arguably, are more powerful (e.g., TASM and HLA).
  • Microsoft is no longer selling MASM and its future is in question.
  • Though there are a ton of books and tutorials available for MASM, most of them involve the use of the obsolete MS-DOS operating system and are of little use to programmers wanting to learn or use assembly language on a modern OS.
  • MASM is only usable for creating DOS and Windows applications; you cannot effectively use it to create software for other operating systems.

Still, there are some benefits to using MASM today:

  • Steve Hutchessen's ("Hutch") MASM32 package provides the support for MASM that Microsoft no longer provides.
  • You can download MASM (and MASM32) free from Microsoft and other sites.
  • Most Windows' assembly language examples on the Internet today use MASM syntax.

You may download MASM directly from Webster as part of the MASM32 package that Hutch maintains (see the links below) or visit the MASMForum support site and check for the latest and greatest version of MASM32. You may also read the MASM documentation on-line here at Webster and you may also peruse several example files to get a feeling for the MASM syntax (without having to download the assembler and unpack the example files).

MASM
MASMForum Support Board
http://www.masmforum.com
Win32Asm Community Support Board
http://board.win32asmcommunity.net
"Official" MASM32 Site http://www.movsd.com
Download MASM32
Hutch's MASM32 Package
Instructions on downloading MASM from Microsoft's Web Site
MASM Documentation
MASM Reference in PDF format
MASM Reference and Programmer's Guide in HTML Format
Download MASM Programmer's Guide in ZIP Form
Download MASM Reference Guide in ZIP Form
Download MASM documentation in Word/Zip Form MASMDOC.ZIP
Iczelion Tutorials for MASM Programming Under Windows
Iczelion Win32 tutorials icz-tuts.zip
PE File Tutorials pe-tuts.zip
Example MASM Programs
Tic Tac Toe - Three versions of this old game ttt_1.html
3DFRAMES.ASM 3dframes.asm
Arrays program, demonstrating array access. arrays.asm
BMBUTTON.ASM - demonstrating bit mapped buttons bmbutton.asm
BORDER.ASM - demonstrating window borders border.asm
COMCTLS.ASM - demonstrating Windows common controls comctls.asm
LISTBOX.ASM - demonstrating listboxes under Windows listbox.asm
POPUP.ASM - popup window demonstration popup.asm
TEXTIO.ASM - console window demonstration textio.asm
Library Code For MASM
Various Libraries for MASM Users MASMLibs.html
HLA Standard Library ported to MASM HLA4MASM.html
Note: The MASM32 package (above) includes the M32LIB library package.