2

初めてのアセンブリ プログラムを書きたいと思います。論文でいくつかのプログラムを作成したことがありますが、コンパイラを使用するのは初めてです。イデオンを使用しています。私のプログラムは非常に単純です,A = 5 - Aアセンブリに変換

NEG A
ADD A, 5

ここで、このプログラムを実行して確認したいと思います。コンパイラでそれを行うにはどうすればよいですか? 私を助けてください。ありがとう

4

2 に答える 2

2

特定の言語を設定しているため、提供されたサイトではこのコードを実行できないようです。アセンブリは言語ではなく、一連のプロセッサ命令です。8086 エミュレーターをダウンロードして実行します。

于 2012-04-30T20:27:33.950 に答える
2

これは完全に有効な 8086 アセンブリ言語ではありません。少なくとも、私が知っているアセンブリ構文にはありません。

  • 1 つには、8086 レジスタの名前には 2 文字 (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など) が必要になります。(ただし、より多くのコードが必要になります。ここにあるものは、そのままでは正しく動作しません。少なくとも、retCPU がレールから外れないように、最後に が必要です。)コンパイラを使用して、すべてをブロック (またはコンパイラの同等のもの) に埋め込みますが__asm、純粋なアセンブリ言語で記述している場合は、通常はそうしません。大槌を使って釘を打ち込むようなものです。

于 2012-04-30T20:31:14.390 に答える