masm32和masm之间的区别?

时间:2010-11-02 08:08:26

标签: windows programming-languages masm assembly

我正在尝试学习Windows的程序集,并看到有2个汇编程序:

masm:https://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1c9da0-0510-44a2-b042-7ef370530c64

masm32:http://masm32.com/index.htm

这些是等价的吗?我应该选择哪一个学习Windows的组装?

3 个答案:

答案 0 :(得分:4)

它既是MASM(显然),只是不同的版本。我通常使用官方(MS)链接。 MASM现在也是Windows SDK的一部分 - 如果您安装它,它在ML.exe目录中包含bin

如果您只是用它来学习汇编语言,那么使用的MASM版本并没有多大区别。较新版本的MASM在添加到x86指令集时添加了对64位(ML64.exe)和更新指令的支持,但就是这样。不同汇编者之间的主要区别在于不同的方言。有x86汇编语言的3种主要方言:MASM语法,NASM语法和Unix风格的as语法(以前也有Borland TASM,但现在已经非常死了)。 MASM,NASM和YASM都使用相同的指令和寄存器名称,但有一些略有不同的约定(dword ptr [blah]dword [blah]等)和完全不同的宏语言。 MASM还有一些更高级别的结构,如.if / .endifinvoke等,在其他汇编程序中不存在。无论这种优势与否都是品味问题,我个人更喜欢NASM风格的语法,因为它更经常,我发现宏预处理器使用起来更方便,但这是一个品味问题。

as是另一回事。它使用与英特尔手册中给出的完全不同的语法和指令名称。它是大多数Unix变体(以及来自该环境的编译器,例如GCC)的默认设置,但在该环境之外基本未使用。当前版本的GNU as也支持Intel语法,这使得大多数语法差异都消失了,但as通常主要用作编译器的后端汇编程序,而不是一个完全成熟的宏汇编程序,因此,与MASM或NASM / YASM相比,它仍具有非常有限的功能集。

答案 1 :(得分:1)

看起来,MASM32是一个带编辑器等的整个SDK。您可以下载here只是汇编程序本身与Visual C ++ 2005 Express Edition一起使用(在“系统要求”下阅读)。因此,如果您想从零开始,请下载MASM32 Sdk,据我所知,它更适合初学者。请在此处阅读this页面以获取有关MASM的更多信息。

答案 2 :(得分:0)

MASM32是一个完整的SDK,就像joni说的那样。它包含一个编辑器,一些帮助文件,以及基本上MASM语言编码所需的一切。此外,值得注意的是MASM32确实包含MASM的第8版;你没有遗漏任何东西。我个人推荐使用MASM32作为一个软件包,它使MASM的开始变得更加容易,但你可以从头开始,只使用原始的MASM汇编程序并从那里计算出来。