我正在学习windows组装,看到有两个汇编器:
masm: https : //www.microsoft.com/downloads/en/details.aspx? FamilyID = 7a1c9da0-0510-44a2-b042-7ef370530c64
masm32: http : //masm32.com/index.htm
这些是否相同? 哪一个我应该select学习Windows组装?
这是MASM(显然),只是不同的版本。 我通常会使用官方(MS)链接。 MASM现在也是Windows SDK的一部分 – 如果安装它,它包含bin
目录中的ML.exe
。
如果您只是使用它来学习汇编语言,所使用的MASM版本没有太大区别。 较新版本的MASM添加了对64位( ML64.exe
)的支持和更新的指令,因为它们被添加到x86指令集中,但就是这样。 不同汇编程序之间的主要区别在于不同的方言。 有三种主要的x86汇编语言:MASM语法,NASM语法和Unix风格的语法(以前也是Borland TASM,但是现在已经死了)。 MASM,NASM和YASM都使用相同的指令和寄存器名称,但有一些稍微不同的约定( dword ptr [blah]
与dword [blah]
等)和完全不同的宏语言。 MASM也有一些更高级的构造,比如.if
/ .endif
, invoke
等,在其他汇编中不存在。 无论是否有优势,都是一个有趣的问题,我个人比较喜欢NASM风格的语法,因为它比较规则,我发现宏预处理器使用起来更方便,但这是一个有趣的问题。
as
是一个不同的问题。 它使用完全不同的语法和指令名称,与英特尔手册中给出的名称不同。 这是大多数Unix变种(也包括来自该环境的编译程序,例如GCC)的默认设置,但在该环境之外基本上没有使用。 GNU的当前版本as
支持Intel语法,这使得大部分语法差异都消失了,但是一般来说,它们主要是作为编译器的后端汇编程序,而不是完全成熟的宏汇编程序,所以它仍然具有非常有限的特性集与MASM或NASM / YASM相比。
看起来,MASM32是一个带有编辑器的整个SDK。您可以在这里下载的只是汇编器本身,与Visual C ++ 2005 Express Edition一起使用(请参阅“系统要求”)。 所以,如果你想从零开始,下载MASM32 Sdk,据我所知,更适合初学者。 请阅读此页面以获取有关MASM的更多信息。
像joni说的,MASM32是一个完整的SDK。 它包含一个编辑器,一些帮助文件,以及基本上你需要用MASM语言编码的所有东西。 另外,值得注意的是,MASM32确实包含MASM的第8版; 你不会错过任何东西。 我个人推荐MASM32作为一个软件包,它使得在MASM中起步要容易得多,但是你可以从头开始,只使用原始的MASM汇编程序,并从中找出结果。