Masm Assembler

Debug assembly-language programs with the Microsoft Macro Assembler (MASM), version 6.1. This book documents enhanced features of the language and the programming environment for MASM 6.1. This Programmer’s Guide is written for experienced programmers who know assembly language and are familiar with an assembler. The name MASM has earlier usage as the Unisys Meta Assembler but since about 1990 when Microsoft introduce MASM version 6.0 the name MASM has normally been associated with the Microsoft Macro Assembler. MASM is a programming tool with a very long history and has been in constant development since it earliest version in 1981. The MASM32 SDK version 11 is a working development environment for programmers who are interested in either learning or writing 32 bit Microsoft assembler (MASM). The installation is an automated process that installs the correct directory tree structure on the local drive of your choice.

The MASM32 Website This is the website for the MASM32 SDK. It contains the main download sites around the world, installation technical data, the MASM32 licence and ralated historical data on the Microsoft assembler MASM. The Microsoft Macro Assembler (MASM) is an assembler for the x86 family of microprocessors, originally produced Microsoft MS-DOS operating system. The features of MASM are listed below: i.

Microsoft Macro Assembler (MASM) is an x86 Assembler that uses Intel syntax for MS-DOS and Windows.

In most Universities, for 8086 Programming, Windows XP Systems are used in laboratories, which is the last version of windows to support 16-bit DOS programs.

However, most students use Windows 7 and above, running either 32-bit or 64-bit OS. Although officially unsupported, there is a way to run the same classic DOS interface with windows 7 and above.

Here are the steps:

  1. Go to the download link (DOS Box & 8086 Assembler With CodeView) and download both the zip files in the folder.
  2. Unzip both the folders, Copy the folder named 8086 in the root directory (C:8086).
  3. Install the executable DOSBox file in the other zip file.
  4. Open DOSBox (shortcut should automatically be placed in the desktop post installation).
  5. Type in the following commands:
    • mount c c:8086 (this step is to be repeated every time you open DOSBox)
    • c:
    • edit (filename).asm (then write your code)
    • masm/zi (filename).asm;
    • link/co (filename);
    • cv/p (filename) (this will open up CodeView)
  6. To use in Full screen mode, Press alt+Enter key.
  7. use the syntax exit to exit out of DOSBox.

That is all. You should have a working old school 8086 Assembler with CodeView at this point.

For any dead download link(s), please put it up in the comments section below. I’ll update as soon as possible.

Myths About MASM

Masm Assembler Syntax Highlighter

The name MASM has earlier usage as theUnisys Meta Assemblerbutsince about 1990 when Microsoft introduce MASM version 6.0 the nameMASM has normally been associated with the Microsoft Macro Assembler.MASM is a programming tool with a very long history and has been inconstant development since it earliest version in 1981. Below is thecopyright notice when ML.EXE version 6.14 is run from the command line.

Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

MASMpreserves the historical INTEL notation for writing x86 assembler andit is a defacto industrial standard because of the length of time ithas been a premier programming tool. From the late 80s onwards it hasbeen compatible with whatever has been the current Microsoft objectfile format and this has made assembler modules written in MASMdirectly compatible with other Microsoft languages.

Masm assembler visual studio 2019

Thecurrent versions of ML.EXE (The assembler in MASM) as of late 2015 isversion 11 with versions 9 and 10 being current for operating systemversion going back to Win7 but the architecture and format ofcurrent and recent versions of ML.EXE are based on the version 6.00that was released in 1990. The technical data published in the manualsfor version 6.00 and the last seperate release of MASM 6.11d as acommercial product still mainly apply to the most recent versions.

Microsoft released version 6.11d in1993including32 bit Windows operating system capacity. It is the original win 32assembler and was supported in that release with 32 bit assembler codeexamples that would run on the early 32 bit versions of Windows NT.

Debunking the myths about MASM

1. MASM is no longer supported or upgraded by Microsoft.

Nobodyhas told this to Microsoft who supply ML.EXE 9.0 in the Win7 DDK andversion 10 and 11 for later Windows versions. It has been a componentof the Microsoft Visual C/Studios commercial developmentenvironment since it was made available as a processor pack in 2000 forVC98. It is upgraded on a needs basic by Microsoft noting that it hasbeen in constant development since 1981 and does not need much done toit apart from the occasional upgrade to reflect operating system andhardware changes. It is well known that Microsoft use MASM to writecritical parts of their own operating systems.

2. MASM produces bloated files that are larger than true low level assemblers.

Thisfolklore does not fit the facts. In 16 bit code MASM can produce a 2byte com file (int 19h) and in modern 32 bit PE (Portable Executable)files, it can produce a 1024 byte working window which is the PEspecification minimum size for a PE file. Much of this folklore wasinvented in the middle 90s by people who could not ever write assemblercode in MASM.

3. MASM is not a true low level assembler.

MASMcan write at the lowest possible level in an assembler with direct DBsequences in the code section. The recent versions can write the entireIntel instruction set up to SSE4+. Many confuse the higher levelsimulations in MASM with the incapacity to write true low level code.MASM is the architypal MACRO assembler for the Windows platform andthis macro capacity is powerful enough to emulate many forms of higherlevel constructions.

4. MASM is only an accessory for C programming.

Nobodyseems to have told this to the hundreds of thousands of assemblerprogrammers who write executable programs and dynamic link librariesfor 32 bit Windows in MASM. In 32 bit Windows, MASM (ML.EXE) producesthe identical COFF (common object file format) to Microsoft Visual C(CL.EXE) so object modules written in either MASM or Visual C areinterchangable. With MASM you have the choice of writing an objectmodule in Microsoft C and using it with a MASM application just as youcan write an object module in MASM and use it with Visual C. Thedifference with MASM is it is powerful enough to use a C compiler as anaccessory to assembler programming.

5. MASM modifies your code when it assembles it.

Whatyou write is what you get with MASM. If you use some of the more commonhigher level capacities in MASM, you get the format it is written tocreate and this applies to the use of a stack frame for procedures andcharacteristics like jump length extension if a jump is too far awayfrom the label it jumps to. In both instances you have options tochange this, you can disable jump extensions if you want to and specifythe jump range with SHORT or NEAR. With a procedure where you don'twant a stack frame, you use a standard MASM syntax to turn the stackframe off and re-enable it after the procedure is finished. Thistechnique is commonly used when writing reusable code for librarieswhere an extra register is required or where the stack overhead mayslightly slow down the procedure.

6. MASM code is too complex for a beginner to learn.

Masm Assembler Download Free

Thisis another myth from people trying to support other assemblers thatdon't have the code parsing power of MASM. MASM can be used to writefrom very simple code to extremely complex code. The difference is thatit is powerful enough to do both without the ugly and complicatedsyntax of some of the other assemblers around that don't have theparsing power that of MASM. Differing from some of the less powerfulassemblers, MASM uses the historical Intel notation when it useskeywords likeOFFSETasthis correctly distinguishes between a fixed address within anexecutable image and a stack variable which is created at run time whena procedure is called. When MASM requires operators likeBYTE PTR, it is to distinguish between ambiguous notation forms where the size of the data cannot be determined any other way.

7. MASM is really a compiler because it has high level code.

Masm Assembler Tutorial

MASMis capable of writing many normal high level constructions likestructures, unions, pointers and high level style procedures that haveboth size of parameter checking and parameter count checking but thedifference again is that it is powerful enough to do this where many ofthe others are not. While you can write unreliable and impossible todebug code like some other assemblers must do, with MASM you have thechoice to write highly reliable code that is subject to typechecking.

Thereal problem is that such capacities are technically hard to write intoan assembler and while some of the authors of other assemblers are veryhigly skilled programmers, an individual does not have the resources,duration or capacity of a large software corporation that has developedand maintained MASM over just over 30 years.

Masm Assembler Download


Comments are closed.