偏移地址

偏移地址

偏移地址也稱為偏移量,由於8086/8088CPU內部的ALU只能進行16位的運算,而8086/8088有20條地址線,直接定址能力1MB。因此,8086/8088所使用的20位物理地址,是由相應的段地址加上偏移地址組成的。

定義


偏移地址就是計算機里的內存分段后,在段內某一地址相對於段首地址(段地址)的偏移量. 如8086存儲系統中 20位的物理地址(就是數據存儲的實際地址)=16位的段基地址*16+16位的偏移量
全稱:偏移地址(Offset Address)或有效地址(EA,Effective Address)

計算方法


物理地址計算方法
8086/8088有20條地址線,它的直接定址能力為1MB。也就是在一個系統中可以有多達1MB的存儲器,地址從00000H—FFFFFH。給定任意一個20位物理地址,就可以從中取出需要的指令和操作數。但是8086/8088CPU只能進行16位運算。與地址有關的寄存器SP、IP、BP、SI、DI也都是16位的,所以對地址的運算也只能是16位的。對於8086/8088來說,無論採用哪種定址方式,尋找操作數的範圍最大是2^16,也就是64K。如何才能形成20位的物理地址呢。系統先將1MB存儲器以64KB為範圍分成若干段。在定址一個具體物理地址時,由一個基本地址再加上由SP或IP等可由CPU處理的16位偏移量來形成20位物理地址。
當系統需要產生一個20位地址的時候,一個段寄存器會自動被選擇。且自動左移4位再與一個16位地址偏移量相加產生所需的20位地址。
例如:數據段DS寄存器的值=0088H
偏移地址=22H
那麼生成的20位物理地址等於 00880H+22H=008A2H