What is MASM?

The Microsoft Macro Assembler is an x86 assembler for MS-DOS and Microsoft Windows. While the name MASM has earlier usage it is commonly understood in more recent years to refer to the Microsoft assembler. It supports a wide variety of macro facilities andstructured programming idioms, including high-level functions for looping and procedures. Later versions added the capability of producing programs for Windows. MASM is one of the few Microsoft development tools that target 16-bit32-bit and is supplied as a 64 bit version ML64.EXE for 64-bit platforms. Versions 5.0 and earlier were MS-DOS applications. Versions 5.1 and 6.0 were available as both MS-DOSand OS/2 applications. Versions 6.12 to 6.14 were implemented as patches for version 6.11 which converted them from 16 bit MZ executables to 32 bit PE executable files. All later versions have been 32 bit PE executable files built as Win32 console mode applications.

About This Site

This is my first attempt at creating a website. I have never even written a blog before this. Basically through this site i will try to upload as many assembly level programs in 8086 as i can. I hope it will atleast help someone.This site is for learning and not for copying programs from here.:)

For VIT university students

File Size: 96 kb
File Type: xls
Download File

File Size: 548 kb
File Type: doc
Download File

File Size: 37 kb
File Type: doc
Download File


Download this file for vista users to link MASM obj

To use this file run the exe file lnk563 a new link.exe will be created. Copy this file to MASM folder and replace with previous one
File Size: 281 kb
File Type: exe
Download File

If you don't have MASM download it from here

File Size: 306 kb
File Type: rar
Download File

History of MASM

The Microsoft Assembler, commonly known as MASM has been in production since 1981 and is upgraded by Microsoft to keep abreast with operating system needs and processor developments. Versions 6.1 and 6.11 included Phar Lap's TNT DOS extender so that MASM could run in MS-DOS.

The last freestanding commercial version of the Mirosoft assembler was version 6.11d released in the middle 1990s. With the release of 32 bit versions of Windows with both the OEM win95 and WinNT version 4.0, Microsoft developed ML.EXE mainly for internal use as an operating system vendor and it was mainly available only through MSDN subscription but Microsoft developed patches for the last commercial version of ML.EXE that upgraded it from a 16 bit MZ executable to a proper 32 bit portable executable file that ran natively on the 32 bit Windows platforms. With the release of the 6.14 patch, ML.EXE became a very reliable tool that supported Intel opcodes up to the early SSE instruction set.

In mid-2000 Microsoft re-integrated ML.EXE back into their VC98 commercial software development package with the processor pack as the downloadable file VCPP5.EXE which was licenced so that licenced end users of VC98 could redistribute the processor pack to other licenced end users of VC98 and all versions of Microsoft Visual C and Visual Studios have contained ML.EXE as a component since that time. The ML.EXE version supplied in the VCPP5 pack was ML.EXE version 6.15 which added support for the SSE2 Intel instruction set. Successive versions of ML.EXE have been developed on a needs basis to include later Intel mnemonics. Later in Visual C++ 2005, a 64-bit version of MASM appeared.

Although MASM is no longer a freestanding commercial product, it has since 2000 been a component of the Microsoft commercial development environment Visual Studio but Microsoft have also made it availabe in many different packages for device development and more recently in the free downloadable versions of Visual Studio.

Version 7.0 was included with Visual C++ .NET 2002. Version 7.1 was included with Visual C++ .NET 2003. Version 8.0 was included with Visual C++ 2005 which also includes a version that can assemble x64 code. Version 9.0 is included with Visual C++ 2008. Some of the newer versions of MASM are also included in various Microsoft SDKs and DDKs.

ML.EXE is typically an internal usage industrial tool maintained by a major operating system vendor to serve their own purpose without the need to make it a particularly "user friendly" application as the vast majority of its users are experienced programmers who have used it for many years. Microsoft have tended to use assembler code in the very low levels of their operating systems where even the best C compilers do not deliver sufficiently optimised code for the intended purpose. This is evident for programmers with enough technical experience who have some need to disassemble occasional OS components for research and compatibility purposes like NTOSKRNL.EXE and HAL.DLL and the tell tale indication of code written by hand in ML.EXE is the use of the trailing LEAVE mnemonic at the end of a procedure with a stack frame.


join masmprograms on facebook