TASM 可以在 NASM 上编码 运行,反之亦然吗?

Can TASM code run on NASM and vice versa?

我正在学习计算机组织和体系结构课程,作为课程的一部分,我们必须学习汇编语言。他们告诉我们安装 NASM,但 TASM 和 MASM 也完全可以接受,尽管如果我遇到后两者的问题,它们将无济于事。

我正在使用 windows 7 Ultimate 64 位,所以 NASM 不起作用。在尝试了两天找到解决方案以在我的计算机上将其设置为 运行 之后,我终于放弃了。现在我有 TASM 运行 DOSBox.

所以我的问题是:

他们会在 TASM 上给我 运行 的 NASM 代码示例吗?另外,如果我开始学习 TASM 教程,即使他们用 NASM?

编译它,我也会学习与他们正在教授的完全相同的程序集吗?

我不想因为习惯了不同的编译器而在考试中得到错误的答案。

TASM 和 NASM 是非常不同的汇编器。

  • TASM 对类型非常敏感; NASM 完全没有。
  • NASM 大量使用宏; TASM 宏非常笨重。
  • NASM支持本地符号(使用.); (大多数)TASM 符号是全球性的。

正如@Peter Cordes 指出的那样:

  • TASM 和 NASM 指定数字的方式不同(TASM 不能使用 0x 前缀);
  • TASM 允许可怕的 mov ax, address,这意味着什么是 AT address,而不是 address-as-a-value。没错,这是为了与 Microsoft 的(更糟糕的)MASM 兼容。

为了避免最后一个,始终 使用 mov ax,offset addressmov ax,[address] 以避免任何歧义。

虽然汇编程序的实际操作码和寄存器是相同的,但围绕它的所有额外定义都使用完全不同的语法。

我使用 TASM 已有几十年了。现在我被迫使用 NASM - 和 I don't like it very much...