【问题标题】:Difference between NASM, TASM, & MASMNASM、TASM 和 MASM 之间的区别
【发布时间】:2020-09-03 13:16:24
【问题描述】:

有人能解释一下:masm、tasm 和 nasm 之间的区别吗? 为什么我不能在 linux 上运行 tasm 代码?它们是不同的语言吗? 我认为汇编语言对于所有系统都是独一无二的。

【问题讨论】:

    标签: linux windows nasm masm tasm


    【解决方案1】:

    TASM、MASM 和 NASM 是 x86 汇编器。

    Borland Turbo Assembler (TASM) 和 Microsoft Macro Assembler (MASM) 基于 DOS/Windows,Netwide Assembler (NASM) 也可用于其他平台。 TASM 产生 16 位/32 位输出,MASM 和 NASM 也产生 64 位输出。

    所有这些汇编程序都将 x86 指令集作为输入。然而,这并不意味着汇编源文件是相同且兼容的。

    指令语法

    汇编程序期望英特尔指令集文档中使用的原始语法(英特尔语法)或 AT&T 贝尔实验室开发的所谓 AT&T 语法。 AT&T 使用mov src, dest,英特尔使用mov dest, src,还有其他区别。

    Windows 汇编器更喜欢 Intel 语法(TASM、MASM),大多数 Linux/UNIX 汇编器使用 AT&T。 NASM 使用 Intel 语法的变体。

    特定于汇编器的语法

    对于影响汇编过程、宏和 cmets 的指令,汇编程序有自己的语法。这些通常因汇编程序而异。

    兼容性

    TASM 可以在“MASM 模式”下组装 MASM 源。

    NASM 可以在“TASM 模式”下组装 TASM 代码。因此,理论上,您可以使用 TASM 代码并在 Linux 上使用该模式使用 NASM 组装它们。当然,代码可能仍需要调整。如果代码具有操作系统依赖性,那么在您从 Windows 迁移到 Linux 时,这些都需要您注意。

    【讨论】:

      猜你喜欢
      • 2012-11-14
      • 2014-10-21
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-23
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多