0

次の質問をされましたが、回答するのに十分な情報がどのように含まれているかわかりません。

「をEAX含み00000200H、をEBX含み00000003H、データ セグメントに が含まれる場合1000H、この命令によって生成される実効アドレスは?」

MOV ECX,[ESI][EDI]

ESIおよびEDIレジスタに含まれている値をどのように知ることができますか? ESIEDIレジスタは通常、文字列操作で使用される ことを知っています...

また、有効なアドレスを作成するための一般的な形式は次のとおりであることも知っています。

DS1) 4 ビット左にシフトします。

2) シフトしDSた値をオフセット値に加算します。

上記のコード スニペットでは、オフセットは[ESI][EDI]と同じだと思います[ESI + EDI][ESI][EDI]私は英語で次のように解釈します。

「オフセットは、レジスタに含まESIれる値にレジスタに含まれる値を加算した値に等しくなりEDIます。」

これは、8 週間の x86 マイクロプロセッサ コースの最初の週なので、フィードバックに感謝します。

4

1 に答える 1

1

の実効アドレスは次のds:eax+ebxように計算できます。

ds =  0x1000 (4096 in decimal)
eax = 0x200  (512 in decimal)
ebx = 3

ds:eax+ebx = 0x10 * 0x1000 + 0x200 + 3

ds:eax+ebx = 0x10203 (66051 decimal)

しかし、 と の値に基づいて と の値については何も言えません。esiレジスタediは完全に独立しているため、 の実効アドレスも計算できません。dseaxebxds:esi+edi

于 2013-03-10T21:35:50.163 に答える