Segment:Offset
アドレスはSegment
*0x10+として計算できますOffset
。しかし、どうすれば反対を計算できますか?
たとえば、どのようにから0xF4170
へF400:0170
、から0xACF04
へ行くのABCD:1234
ですか?
Segment:Offset
アドレスはSegment
*0x10+として計算できますOffset
。しかし、どうすれば反対を計算できますか?
たとえば、どのようにから0xF4170
へF400:0170
、から0xACF04
へ行くのABCD:1234
ですか?
Segment:Offset
複数のペアが同じ線形アドレスにマップできるため、線形アドレスとともに、最初にベースまたはオフセットのいずれかを用意する必要があります。
したがって、セグメント0xF400
と線形アドレスがある場合0xF4170
、オフセット0xF4170 - (0xF400 << 4)
は。になり0x170
ます。
seg
線形アドレスを知っているだけでこれを行うには、一意の解決策がないため、20ビットアドレスを16バイト整列部分とバイトオフセットに分割するための規則を選択する必要があります。考えられる機能の1つは次のとおりです。
Segement = linear >> 4
(上位16ビット)offset = linear & 0x0F
(下位4ビット)12:8ビットの標準形を選択して、より広い線形アドレスで将来拡張する余地を残すことができます。