違いがわかりません。
4 に答える
movsb などの命令を使用している場合、si はソースレジスタと見なされ、di は宛先レジスタと見なされます。ただし、どちらも通常の x86 レジスタです。
私のアセンブリは少し錆びていますが、1 つはソース インデックスで、もう 1 つは宛先インデックスです。のような命令は、movsbが指すメモリ位置から 1 バイトをコピーし、 が指すメモリ位置SIに移動し、両方DIをインクリメントします。 .SI+1DI+1
SIソースインデックスを表します。ソース インデックスは、文字列命令 (LODS、MOVS、または CMPS) で読み取られる現在の文字へのポインターとして使用されます。ソース インデックスは、間接アドレッシングを行うときに Bx または Bp を追加するためのオフセットとしても利用できます。
例:
MOV [Bx + SI] , Ax
この命令は、Ax の内容を、アドレスが Bx と SI の合計であるメモリ位置にコピーします。
DI宛先インデックスを表し、文字列命令で書き込まれるか比較される現在の文字へのポインターとして使用されます。
SI と同様にオフセットとしても使用できます。
上で説明したように、di は移動先インデックスを表し、si はソース インデックスを表します。メモリからデータを移動する場合は、mov ax,[si] のように si を使用します。データをメモリに移動する場合は、di を使用します。例: mov [di],ax
両方とも 16 ビット レジスタであり、8 ビットに分割することはできません