4

Segment:OffsetアドレスはSegment*0x10+として計算できますOffset。しかし、どうすれば反対を計算できますか?

たとえば、どのようにから0xF4170F400:0170、から0xACF04へ行くのABCD:1234ですか?

4

1 に答える 1

4

Segment:Offset複数のペアが同じ線形アドレスにマップできるため、線形アドレスとともに、最初にベースまたはオフセットのいずれかを用意する必要があります。

したがって、セグメント0xF400と線形アドレスがある場合0xF4170、オフセット0xF4170 - (0xF400 << 4)は。になり0x170ます。


seg線形アドレスを知っているだけでこれを行うには、一意の解決策がないため、20ビットアドレスを16バイト整列部分とバイトオフセットに分割するための規則を選択する必要があります。考えられる機能の1つは次のとおりです。

  • Segement = linear >> 4 (上位16ビット)
  • offset = linear & 0x0F(下位4ビット)

12:8ビットの標準形を選択して、より広い線形アドレスで将来拡張する余地を残すことができます。

于 2012-02-27T12:10:45.383 に答える