When i install masm assembler, it asked to install Microsoft visual c++ 2005 express edition. I installed it. Now i can find only "ml.exe". Where is masm.exe? Even i tried in cmd by typing masm.exe, but it didn't work. Is masm.exe and ml.exe same?
Asked
Active
Viewed 5,354 times
8
-
2IIRC, `ml.exe` is the new name for MASM. I don't know when exactly it was changed but I got bitten by this a while back after not using MASM for some years. https://msdn.microsoft.com/en-us/library/s0ksfwcf.aspx – xxbbcc Feb 09 '15 at 16:52
-
1therefore both are same right? – user3718000 Feb 09 '15 at 16:53
-
AFAIK, there's no masm.exe anymore - it's only `ml.exe` and `ml64.exe`. So you can say they're the same - masm.exe got renamed. – xxbbcc Feb 09 '15 at 16:55
-
Thank you very much. Is MVC++ a mandatory thing for it to run? – user3718000 Feb 09 '15 at 16:57
-
No, MSVC++ is not required for assembly programming. MASM can be installed separately for non-commercial use: http://www.microsoft.com/en-us/download/details.aspx?id=12654. If you want the full suite, Visual Studio may be required (that includes both 32-bit and 64-bit versions). – xxbbcc Feb 09 '15 at 16:59
-
If you already installed VS 2005 Express, you will have everything you can get for free for MASM. I've never installed one of the Express editions, so I don't know if it has `ml64.exe`. – xxbbcc Feb 09 '15 at 17:01
-
Other software components from the MSDOS days include programmers work bench, code view (source level debugger with text user interface), quick help, nmake, ... . – rcgldr Feb 10 '15 at 09:05
2 Answers
9
MASM.EXE
was the "Microsoft Macro ASseMbler" as MSDOS-program. ML.EXE
is the "Microsoft Macro Assembler and Linker" as Win32-program. ML64.EXE
is "MASM for x64". They all can be called "MASM". "MASM32" is commonly used for a SDK named MASM32, e.g. for a tag here (masm32).

rkhb
- 14,159
- 7
- 32
- 60
-
Some software bundles for ML.EXE 6.11 include both MASM.EXE and ML.EXE, but MASM.EXE just calls ML.EXE with command line parameters for 5.0 compatability. ML.EXE is a 32 bit program, but it will use a built in dos extender if running in 16 bit real mode (like MSDOS). It can also run in a 32 bit dos console window. – rcgldr Feb 10 '15 at 09:03
-
@rcgldr: MASM.EXE 6.11 is in fact a "Microsoft (R) MASM Compatibility Driver Version 6.11" , runs in MSDOS and calls ML.EXE in Win32. But the MSDOS part ("stub") of ML.EXE reports in DOSBox: "This program cannot be run in DOS mode". – rkhb Feb 10 '15 at 09:28
-
To run MASM.EXE / ML.EXE 6.11 on MSDOS, you need the dos extender DOSXNT.EXE, and also you need to set an environment variable for the dos extender: set tnt=-nopspgrow . It's not just ML.EXE, but most of the .EXE files that come with "MASM 6.11". I recall using the 6.11 dot directives like .if .else .endif, with several MSDOS projects, and I think I was running ML.EXE in order to use the dot directives. If you patch / update to 6.14 (maybe 6.12 or later), then it won't run under MSDOS. – rcgldr Feb 10 '15 at 10:21
0
Microsoft Developer Network says:
ml.exe : Assembles and links one or more assembly-language source files.
ml.exe has 64 bit named ml64.exe and I think they are newer version of masm.exe and I think MASM does not have 64 bit version.

Parham Alvani
- 2,305
- 2
- 14
- 25
-
This is incorrect. MASM 6.11 is the last MASM version that works in MS-DOS and it has **both** `masm.exe` and `ml.exe`. – nrz Feb 09 '15 at 18:30
-
1@nrz Thank you, I did not see that version. I correct my answer. Thanks again – Parham Alvani Feb 09 '15 at 18:49