1. ホーム
  2. assembly

[解決済み] ESIとEDIレジスタの目的は?

2022-03-15 02:08:02

質問

アセンブラにおけるEDI & ESIレジスタの実際の目的と用途は何ですか?

一応、文字列操作に使われることは知っているのですが。

また、どなたか例を挙げてください。

どのように解決するのですか?

いくつかの操作を行うことができます。 のみ DI/SI(または、1985年にASMを学んでいない場合は、その拡張版)で行うことができます。そのうちのひとつは

REP STOSB
REP MOVSB
REP SCASB

それぞれ、繰り返し(=大量)保存、読み込み、スキャンを行うための操作です。SIやDIを設定して、片方または両方のオペランドを指し、CXにカウントを入れ、そして実行するのです。これらは、一度に大量のバイトを処理する操作で、CPUを自動化するようなものです。ループを明示的にコーディングしていないので、ハンドコーディングのループよりも(通常は)効率的に処理を行うことができます。

念のため。MOVSBは、あるバッファ(まあ、任意のバイトの束)から別のバッファにデータをコピーするのに使われると思います。SCASBは、ある検索基準(等号で検索するだけかどうかはわかりませんが、調べてみてください :) に一致するバイトを探すのに使われます。)

そのREGはほとんどそうですね。