20

違いがわかりません。

4

4 に答える 4

29

movsb などの命令を使用している場合、si はソースレジスタと見なされ、di は宛先レジスタと見なされます。ただし、どちらも通常の x86 レジスタです。

于 2009-09-27T18:37:59.613 に答える
12

私のアセンブリは少し錆びていますが、1 つはソース インデックスで、もう 1 つは宛先インデックスです。のような命令は、movsbが指すメモリ位置から 1 バイトをコピーし、 が指すメモリ位置SIに移動し、両方DIをインクリメントします。 .SI+1DI+1

于 2009-09-27T18:37:34.803 に答える
6

SIソースインデックスを表します。ソース インデックスは、文字列命令 (LODS、MOVS、または CMPS) で読み取られる現在の文字へのポインターとして使用されます。ソース インデックスは、間接アドレッシングを行うときに Bx または Bp を追加するためのオフセットとしても利用できます。
例:

MOV [Bx + SI] , Ax  

この命令は、Ax の内容を、アドレスが Bx と SI の合計であるメモリ位置にコピーします。

DI宛先インデックスを表し、文字列命令で書き込まれるか比較される現在の文字へのポインターとして使用されます。

SI と同様にオフセットとしても使用できます。

于 2013-09-25T05:51:43.890 に答える
0

上で説明したように、di は移動先インデックスを表し、si はソース インデックスを表します。メモリからデータを移動する場合は、mov ax,[si] のように si を使用します。データをメモリに移動する場合は、di を使用します。例: mov [di],ax

両方とも 16 ビット レジスタであり、8 ビットに分割することはできません

于 2010-01-19T05:06:14.133 に答える