I'd like to encourage the use of the v6.15 version of MASM/ML for
assembly work on the PC. In that spirit, here's a page that tells you what tools to
get and where to get them. (There is also a version 7.0 version of ML, I'm told. But I've
not found a way to get it for free or to provide updates to it from prior versions. If
anyone knows a way, I'd be happy to hear of it.)
||Back in late 2001, I also received an email from Terry
Leeper at Microsoft who, at the time, identified himself as the Program Manager for
Visual C++ at Microsoft. There's a link on the side panel here with those email
conversations between us.
Just Get It!
Without any further ado, here is a quick one-stop shop for getting
6.0 Processor Pack Download Page
VCPP.EXE (SP4) --or-- VCPP5.EXE (SP5)
The 'processor pack' is the place to go in order to get
ML v6.15. It only runs in a DOS box under the Windows operating system, so it cannot be
hosted on a pure DOS system, for example. I'm told you can use WinZIP to unpack the above
.EXE files. However, you can also simply run them and copy out the files you want when the
error message appears. (The unpackager will destroy the files when you respond to the
error message, so you need to copy them before that takes place.)
The files to get ahold of are ML.EXE and ML.ERR.
You will need both to use the assembler.
The MASM32 web site is something I'd largely ignored before, as they are
pushing 32-bit Windows programming. Although I do some 32-bit assembly for the x86, it's
not often and it's usually not Windows 32-bit programming. So I honestly didn't know that
they were including anything from Microsoft in their distribution kit. However, they are
-- v6.14 ML. Which is a fine tool -- made all the finer for the extras that are
included in the distribution from this site.
This site provides a ZIP file, which expands into an
EXE, which then installs (so far as I'm aware) only on your C drive. But in the ./bin
directory you will see ML.EXE and ML.ERR. Also, linkers, librarians, etc.
By the way, there is a nice Windows editor with various
built-in help features that are a nice addition for folks learning to use x86 assembly.
This is a product worth getting and picking through for tools you can use well.
(Some of the sites linked by the MASM32 site, such as a
German one, also include Microsoft compilers like the PDS 7.1 BASIC compiler. I'm curious
(and jealous) if MASM32's distribution legally includes ML v6.14. And I'm fairly
sure that sites distributing BASIC compiler chains from Microsoft aren't doing so,
legally. I honestly wish Microsoft would just release them into the public domain --
I believe they would benefit more from such action than from any attendant harm.)
-- or --
FTP: v6.14 patch (ML614.EXE)
For those interested, I'm also including the above
patch that is still available from Microsoft. You don't need to patch the version you get
from the MASM32 web site, but this may be useful to those wishing to patch their copy of
an earlier ML (6.11, 6.11a, 6.11d, 6.12 or 6.13) they may already have. Also including a
link to Microsoft's parent page for that patch, Q228454.
patch for v6.11a/d (ML613.EXE)
Microsoft is still
offering a patch to convert 6.11a or 6.11d into v6.13. The link is above.
patch for v6.11a/d (ML612.EXE)
Microsoft is still
offering a patch to convert 6.11a or 6.11d into v6.12. The link is above.
patch for 6.11/a (ML611D.EXE)
This version was
offered as a patch and I used it for some time before switching to a later version. This
is the last version that will still run on a plain DOS system -- however, it does require
DOSXNT.EXE and DOSXNT.386 on plain DOS systems, so if you don't have that v6.11d won't run
for you. I think you have to go back to MASM 5.10B for the last version that ran on
straight DOS without a DOS extender.
Microsoft provided 6.11c, I believe,
as a complete system (lots of files, not just a couple) inside one of their DDK
distributions. I forget which one, but I remember being impressed that they'd released the
whole thing like that. Naturally, anything that good doesn't last. They not only stopped
doing that, but also made certain that their later patches (such as the 6.12 patch, for
example) would not patch this version. I don't know where this version may be, today. But
it is possible that Microsoft lost some or all of their rights to control it, by releasing
it the way they did. I'd love to see the distribution again and perhaps I'll someday check
all my MSDN disks and other disks from Microsoft to see if I can find it. (I still
have a working version of v6.13c on my hard disk.) I believe their distribution of
v6.11c included DOSXNT.EXE and DOSXNT.386, by the way.
I don't recall seeing this version.
Not for long, anyway. I do not have a version of it floating about, either. I'm of the
opinion that this one might not have been released or that it was quickly removed from
I believe this was offered as a
patch to a packaged 6.11 assembler (or else as a patch to the 6.10 assembler, which I'm
sure was packaged.) I don't have a copy of this, anymore.
|v6.0 - v6.11
Information on Microsoft Assembler Versions
were offered as upgrades, packaged versions, and packaged versions for academic use, I
believe. See the web site listed here for some information and pictures.
|I hadn't heard of a newer version of ML than 6.15,
until recently, when someone told me that it is available as 7.0 in Visual Studio C#.NET.
If you decide to get v6.15 of ML.EXE and ML.ERR from the Visual C++
6.0 Processor Pack mentioned above, you can also get H2INC.EXE and H2INC.ERR, as well.
This tool allows you to convert C language include files into assembly include files.
It's useful, to a point. May as well get it, too.
The Visual C++
6.0 Processor Pack is a self-extracting and self-installing package. I'm told WinZip
can be used to unpack it, but I don't have WinZip and cannot make a positive statement
about this. If you have WinZip and it works; great! Grab the files and your are done. If
not, or if WinZip doesn't actually work on this package, just start the package. It will
self-extract and then, if you don't have a legal copy of Visual C++ 6.0 on your machine
that it can update, it will pop up an error message dialog box. When this happens, just
ignore it and avoid hitting OK, for now. Drop into DOS or use your Explorer or other file
management tool to copy the ML.EXE and ML.ERR files out of the temporary directory it
creates to somewhere (anywhere) else. If you don't know where that temporary directory is,
it is usually the TEMP directory underneath your WINDOWS directory. It might also be found
by looking at your DOS's SET variables (just enter SET at the DOS prompt and hit ENTER, to
see them) and looking for what is assigned to TEMP. Once you've safely copied them, go
ahead and hit OK to the dialog box. The installation program will then go on to delete all
the temporary files. No problem -- you've already copied them away.
||It's possible that you may need a file called
DOSXNT.EXE and DOSXNT.386, which represent one of several of Microsoft's DOS extenders, if
you are running under Windows 3.1 or straight DOS environments. (I believe these provide
the rudaments of a DPMI server, but I'm open to being wrong about that.) If so, I have not
found a location yet from which you can download them. However, when running under Windows
98 and later, these versions appear to work just fine.
use to provide a nice web page on their extender technology. But that's gone, now.
It was Q123667 and the link was:
on Microsoft DOS Extenders
But the link is broken now and I don't know about a replacement for
||For those wishing they had the full documentation
for Microsoft's MASM assembler tools (including those I don't have links for, like PWB),
this site appears to be excellent.
Microsoft MASM 6.10 Documentation
in PDF Form
-- or --
Q127151 -- broken
This version of LINK is the version of their
'segmented' linker, which works very well for DOS development. It is not a linker for
creating Windows executables, though.
I'm including a broken link to a Microsoft web page
that used to be available and talked about their various linkers. Perhaps I'll find a copy
of it on my MSDN disks and make it available -- or, at least, the information contained in
This version of LINK is another version of their
'segmented' linker, which also works very well for DOS development. Like LNK563, it is not
a linker for creating Windows executables, though. Probably the newer one above is
better, but just in case here's this one, too.
The MASM32 web site also includes a Microsoft linker on their site, useful
for making Windows programs. It's Microsoft's 'incremental' linker, v5.12. I'd also
recommend getting a copy of the segmented linker mentioned just above (v5.60.)
|There may be a number of other linkers available
from Microsoft's web site. I'd be happy to include them here, if folks email me regarding
their locations. Also, the MASM32 web site includes linkers written by others, which may
be very good.
NMAKE15.EXE a self-extracting file, that
includes NMAKE.EXE and NMAKE.ERR. This version of Microsoft's NMAKE isn't something to
rant and rave about, as make-tools go. But it was distributed with Microsoft development
products and it is often used. I'm including a Microsoft link to get a copy and I'm
including their web page on the general subject, Q132084.
|NMAKE.EXE is a later version of Microsoft's earlier
MAKE.EXE program. This program is used to help automate the program building process.
(Unix programmers familiar with a real MAKE program are allowed to laugh their brains out
at this point.) If you already know about it or have some project files that depend on it,
but need a copy, here's where to get it.
||Randy Hyde's Assembly Language
Randy has an extremely generous web
page on the subject of assembly language programming. It is without peer, frankly. If you
are planning to do DOS programming, be sure to get a copy of his Art of Assembly version
designed for 16-bit programming.
|For self-learning assembly, it's hard to beat this
site or to beat the tools he makes available.
David has a useful debugger
replacement. It's handy to have, whether or not you already have Microsoft's DEBUG.EXE
|David's site also includes a MKSYM program, which
can be used to convert a MAP file so that his debugger program can learn about public
symbols in your assembly program.
||Mikael Klasson's HexIt Page
Mikael has a pretty useful hex editor program that also
includes the ability to assembly code and disassemble code, built into it. This program
can actually be used to create assembly programs.
For a time, I didn't have a DNS name for his web site
and so I just use the numerical value. I've had to change his IP twice due to a broken
link in the past, so the above link may become broken yet again. However, I was recently
sent this option as a DNS style link and, although slow in rerouting me there, it worked:
Mikael Klasson's HexIt Page (DNS)
|Mikael's site also includes the source code for his
disassembler, at [D]AzmIt - A[n]
[dis]assembler or else through the slow rerouting at [D]AzmIt - A[n] [dis]assembler.
site: self-extracting ZIP file: olddos.exe
self-extracting ZIP file has a number of files in it, including QBASIC.EXE and QBASIC.HLP.
It also includes the DOS HELP program (handy for those changing CONFIG.SYS or writing
batch files, for example) and a few other "old" MS-DOS utilities (that, I
believe, Microsoft didn't really want you installing, but knew they had to provide for
those who knew they wanted them.)
(For other older utilities that Microsoft provides, or
for more information about the above file, see: Microsoft site: CD-ROM Extras)
|Microsoft provides this link for those Win95
systems that missed having these older MS-DOS programs (those installed from floppies, for
Quick BASIC Compilers
Compiler Download Page
This site provides downloadable copies of Microsoft's
QB 3.0, QB 4.5, and PDS 7.1 BASIC compilers.
|I hope it is the case that Microsoft understands
the value in allowing people to continue learning from and using these compilers and is
accepting this site on those grounds. I'm fairly certain that they are quite adept at
monitoring such sites.
The above list is, of course, not even close to a complete list of
even the better tools to have. It's just a list of those tools I've either looked at or
used (or both.)
Feel free to email me.
Last updated: Saturday, January 21, 2006 00:18