2

我想编写我的第一个汇编程序。我在论文上做了一些程序,但这是我第一次使用编译器。我正在使用ideone。我的程序很简单,翻译A = 5 - A成汇编

NEG A
ADD A, 5

现在我想运行这个程序并检查它。我如何用编译器做到这一点?请帮帮我。谢谢

4

2 回答 2

2

您提供的网站似乎无法运行此代码,因为它设置了特定的语言。汇编不是一种语言,而是一系列处理器指令。下载一个 8086 模拟器来运行它。

于 2012-04-30T20:27:33.950 回答
2

这不是很有效的 8086 汇编语言。至少,它不是我所知道的任何汇编语法。

  • 一方面,8086 寄存器的名称有两个字母(它们被命名为 AX、BX、CX、DX、BP、SP、SI 和 DI..加上一些不能用于数学)。
  • 如果那A是一个内存位置,那么您需要在某处为它贴上标签。而且你需要让汇编器知道它应该是一个字指针,因为你没有把它放在寄存器中。(寄存器大小可以使指针语义明显,但您在这里没有使用寄存器。:P)

相应的 8086 代码(非常相似)将是

neg ax
add ax, 5

或者,为了记忆:

neg  word [A]
add  word [A], 5

... other stuff here ...
A: resw 1             ; some assemblers say this; others say `dw ?`

(MASM 有时可以不用括号。我不知道 MASM 语法,所以希望其他人可以清除该部分。哦,这不是几乎所有其他汇编程序做事的方式。:P)

现在,有了它,您需要一个汇编程序(如Yasm)将该代码转换为可执行文件。(不过,您需要更多代码。您在这里所拥有的将无法按原样正确运行。至少,您需要 aret在最后,这样 CPU 就不会脱轨。)您可以想象使用编译器并将所有内容嵌入到一个__asm块中(或您的编译器的等效项),但如果您使用纯汇编语言编写,您通常不会这样做。这有点像用大锤敲钉子。

于 2012-04-30T20:31:14.390 回答