關于保護模式下的尋址方式,是衆所周知的,比如:
mov edi, [dwDispPos] ;dwDispPos是一個辨別資料的label
首先通過ds中的選擇子所存的偏移和gdtr找到段描述符,然後取出段描述符中的基址加上dwDispPos所訓示的偏移(此偏移是相對于cs段基址的,是以為了正确地取得資料,ds段基址應該與cs段基址相同)。之後再通過分頁機制将所得的線性位址轉換到實體位址。
那麼關于實模式下的尋址方式是怎樣的呢,比如:
mov word [wSectorNo], 19 ;wSectorNo是一個辨別資料的label
由于實模式下沒有段選擇子和分頁機制,是以簡單了許多,這個位址就是ds*16+wSectorNo,wSectorNo的偏移也是相對于cs值的,是以為了正确地取得資料,一般在程式的開始會有:
mov ax,cs
mov ds,ax
mov es,ax
mov ss,ax
無論是保護模式和實模式,計算位址時都是有段基址參與的。