2016-12-03 16 views
0

x8086のレジスタに関する情報が見つかりませんでした。
いずれにしても、各レジスタを使用することができるかどうかわかりますか?アセンブリ言語でのレジスタの使用

たとえば、私はbx、di、siレジスタだけがアドレスポインタとして使用できることを知っています
(例えば、axはコンパイルできません)。

EDIT:
は、これまでのところ、すべての情報をありがとうございました、しかし、私の質問は、おそらく上、十分なだけの言語での改造が、算術opartionsおよびその他の特定のoprationsに対処についてイマイチのための情報探索イムをunderstandble波平それぞれの

私はCANとCANTでそれぞれのアセンブリ演算子を使用していますか?
(MOV、追加、サブ、[]、MUL、等...)

+0

[x86タグwiki](http://stackoverflow.com/tags/x86/info)には多くの便利なリンクがあります。 –

+0

@CodyGray これまでに、何か有用なものが見つからなかったことが確認されました。 は、各レジスタがどのように使用されているかを示していますが、各レジスタの制限に関する情報は表示されません。 –

+2

[この記事では](http://www.swansontec.com/sregisters.html)は、知りたいことがあるすべてのことを文字通り説明していますが、注意深く読む必要があります。 * "16ビットモードでは、基本レジスタEBXは汎用ポインタとして機能します。特殊なESI、EDI、EBPレジスタの他に、次のようなものがあります。 (たとえば、MOV [BX]、AX)で表示される唯一の汎用レジスタですが、32ビットの世界ではどのレジスタもメモリオフセットとして機能するため、ベースレジスタ* –

答えて

1

x86命令セットは、歴史的にパッチを当てた作品、徹底的に文書化されたが、その後も凝集構造を欠いているの信じられないほどの寄せ集めです。アドレスポインタとして機能するレジスタの特定の情報は、reference manual section on addressing formsのセクション2.1.5で見つけることができますが、私はそれをカバーしているとは確信していません。暗黙のポインタを使用するスタックプッシュ/ポップ演算のファミリについては説明していません。ちょうどいくつかのセクション(2.2.1.6)では、RIP相対的な別のアドレッシングモードが見つかりました。

+1

まあ、8086にRIP相対アドレッシングはありません:-)このモデルは、64ビット拡張で新しく追加されました。 –

+0

@CodyGray - OPがRIPとIP相対アドレッシングモードを混同している場合、分岐の近くに8086があり、ニアコールがIP相対である。 – rcgldr

関連する問題