Global Descriptor Tableと保護モードでのセグメントレジスタ
セグメントレジスタに値を入れる
e.g)
mov bx, SysDataSelector
mov ds, bx
保護モードでは16bitのセレクトレジスタと64bitのディスクリプタレジスタがあるが
ds内の数字をOffsetとしてGDTからLimitとBase Address等を取得。それをそのまま、ディスクリプタレジスタに入れる。
また
lea esi, [ds:msgPMode] (msgPModeは0x65)
とすれば、
0x65 + (dsのディスクリプタレジスタに保存されたBaseAddress = GDTのx番目のBaseAddressField)の計算となる。
ここで、BaseAddressが0x10000とすると、
リニアアドレスは0x65 + 0x10000 = 0x10065となる。
Global Descriptor Table http://wiki.osdev.org/Global_Descriptor_Table
Segmentation http://wiki.osdev.org/Segmentation