初めてのアセンブリ プログラムを書きたいと思います。論文でいくつかのプログラムを作成したことがありますが、コンパイラを使用するのは初めてです。イデオンを使用しています。私のプログラムは非常に単純です,A = 5 - A
アセンブリに変換
NEG A
ADD A, 5
ここで、このプログラムを実行して確認したいと思います。コンパイラでそれを行うにはどうすればよいですか? 私を助けてください。ありがとう
特定の言語を設定しているため、提供されたサイトではこのコードを実行できないようです。アセンブリは言語ではなく、一連のプロセッサ命令です。8086 エミュレーターをダウンロードして実行します。
これは完全に有効な 8086 アセンブリ言語ではありません。少なくとも、私が知っているアセンブリ構文にはありません。
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
、純粋なアセンブリ言語で記述している場合は、通常はそうしません。大槌を使って釘を打ち込むようなものです。