7

我正在尝试学习 windows 的组装,并看到有 2 个组装器:

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

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

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

4

3 回答 3

4

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

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

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

于 2010-11-02T08:34:06.777 回答
1

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

于 2010-11-02T08:21:35.153 回答
1

MASM32 是一个完整的 SDK,就像 joni 所说的那样。它包含一个编辑器、一些帮助文件,以及使用 MASM 语言编写代码所需的所有内容。此外,值得注意的是,MASM32 确实包含 MASM 的第 8 版。你没有错过任何东西。我个人推荐将 MASM32 作为一个包,它使 MASM 的开始变得更加容易,但是您可以从头开始,只使用原始的 MASM 汇编程序并从那里弄清楚。

于 2011-06-28T20:15:13.153 回答