天天看點

實模式和保護模式下的位址計算方式

      關于保護模式下的尋址方式,是衆所周知的,比如:

      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

      無論是保護模式和實模式,計算位址時都是有段基址參與的。

繼續閱讀