13

movsb (move string, bytes) 命令は、アドレス ds:si でバイトをフェッチし、アドレス es:di に格納してから、si レジスタと di レジスタを 1 ずつインクリメントまたはデクリメントします。

私は esi,si と edi,di レジスタを知っています。

しかしそうではなくds:sies:di

彼らはどういう意味ですか?

4

2 に答える 2

10

ds:si問題のレジスタによって参照されるセグメント:オフセットをes:di意味します。これは、リアル モードで作業している場合 (オフセットがそれぞれ最大 64K である場合) に主に重要です。

リアルモードでは、セグメントはオフセットされ、 として結合されsegment * 16 + offsetます。

プロテクト モードでは、セグメント レジスタは「セレクタ」を保持します。セレクターが参照するメモリのベース アドレスは、セレクター自体の値とは直接関係ありません。むしろ、セレクターはテーブル内のデータを検索するためのインデックスとして機能します。ただし、通常の場合、これはほとんど意味がありません。ほとんどの (現在の) プロテクト モード環境は、ベース アドレスが 0 で最大オフセットが 4 ギガバイトで設定された CS、DS、ES、および SS で設定されているため、DS を介したアドレス指定対 ES に違いはありません。

于 2011-11-01T01:30:51.700 に答える