What is the difference between MASM.exe and ml.exe?
Asked Answered
C

2

8

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?

Cotto answered 9/2, 2015 at 16:49 Comment(7)
IIRC, 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. msdn.microsoft.com/en-us/library/s0ksfwcf.aspxClaudine
therefore both are same right?Cotto
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.Claudine
Thank you very much. Is MVC++ a mandatory thing for it to run?Cotto
No, MSVC++ is not required for assembly programming. MASM can be installed separately for non-commercial use: 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).Claudine
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.Claudine
Other software components from the MSDOS days include programmers work bench, code view (source level debugger with text user interface), quick help, nmake, ... .Undergrown
F
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 ().

Fairy answered 9/2, 2015 at 17:16 Comment(3)
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.Undergrown
@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".Fairy
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.Undergrown
M
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.

Millicentmillie answered 9/2, 2015 at 16:56 Comment(2)
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.Vacuous
@Vacuous Thank you, I did not see that version. I correct my answer. Thanks againMillicentmillie

© 2022 - 2024 — McMap. All rights reserved.