PC Tools
Home Up Learn ASM PC Tools PC Docs


Terry Leeper

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 the pieces:


v6.15 Visual C++ 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.

v6.14 MASM32

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.)

v6.14 patch (ML614.EXE)
-- 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.

v6.13 FTP: v6.13 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.

v6.12 FTP: v6.12 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.

v6.11d FTP: v6.11d 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 distribution.


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 3rd Party Information on Microsoft Assembler Versions

These 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.

Microsoft use to provide a nice web page on their extender technology.  But that's gone, now. It was Q123667 and the link was:

Article on Microsoft DOS Extenders

But the link is broken now and I don't know about a replacement for it.


* 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 link

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 it.


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.

v5.12 MASM32

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.



v1.50 NMAKE15.EXE


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 Programming Page

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.



v6.8 David Lindauer's Debugger Page

David has a useful debugger replacement. It's handy to have, whether or not you already have Microsoft's DEBUG.EXE program.

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.



v1.57 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.


v1.1 Microsoft site: self-extracting ZIP file: olddos.exe

This 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 example.)


Quick BASIC Compilers

QBCafe 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