基本装配计划

时间:2012-04-30 20:22:14

标签: assembly x86-16

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

NEG A
ADD A, 5

现在我想运行这个程序并检查它。如何使用编译器执行此操作?请帮帮我。感谢

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

  • 一方面,8086个寄存器的名字有两个字母(它们被命名为AX,BX,CX,DX,BP,SP,SI和DI ..plus一些半特殊的“段寄存器”,它们不能用于数学)。
  • 如果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)将该代码转换为可执行文件。 (但是你需要更多的代码。你在这里拥有的东西,将无法正常运行。至少,你需要一个ret,以便CPU不会在轨道上运行。)您可以想象使用编译器并将所有内容嵌入__asm块(或编译器的等效块)中,但如果您使用纯汇编语言编写,通常不会这样做。这有点像用大锤砸钉子。

答案 2 :(得分:-1)

开始使用emu8086,在8086的程序集中编程会更容易