偏移量

偏移量

計算機彙編語言中的偏移量定義為:把存儲單元的實際地址與其所在段的段地址之間的距離稱為段內偏移,也稱為“有效地址或偏移量”。偏移量是16-bit的,因此,一個段是64KB。偏移量就是程式的邏輯地址與段首的差值。在十六進制下就是4位。偏移量存在通用暫存器中,段地址則存在段暫存器中。記憶體被分割成段,並且,操作記憶體時,需要指定段和偏移量。最初的設計中,其中一個暫存器只有4-bit有效,然而為了簡化程式,兩個暫存器都是16-bit有效,並在執行時求出加權和來標識20-bit地址。

基本內容

計算機

彙編語言中的偏移量定義為:把

存儲單元的

實際地址與其所在段的

段地址之間的距離稱為段內偏移,也稱為“

有效地址或偏移量”。

如右圖,段地址左移四位,與有效地址相加,就構成了

邏輯地址。一般而言,段地址是cpu自己獨立編制的,但是偏移量是程式設計師編寫的。偏移量就是程式的邏輯地址與段首的差值。

在早期的8086中

地址線是20位的,而段地址是16位。在十六進制下就是4位。這樣一個

段暫存器就不能完整的描述出記憶體的地址。所以就和

通用暫存器配用。偏移量存在通用暫存器中,段地址則存在段暫存器中。而地址首的五位(十六進制下,二十地址線是五位)有個特點,即末尾總是零,所以就取前四位當做段地址。正好是段地址的存儲空間大小。所以在上圖中,按照地址存儲時的分法,倒過來組合,即左移四位(二進下,十六進制是一位。),比如段地址為1001H(H十六進制之意),左移一位,即補零變為10010,假設

偏移地址是1010,則實際物理地址就是11100了。形象來說,段地址是頭,偏移量是實際位置相對頭的位置。

實模式中,記憶體比

保護模式中的結構更令人困惑。記憶體被分割成段,並且,操作記憶體時,需要指定段和偏移量。

段-

暫存器這種格局是早期硬體電路限制留下的一個傷疤。

地址匯流排在當時有20-bit。然而20-bit的地址不能放到16-bit的暫存器里,這意味著有4-bit必須放到別的地方。因此,為了訪問所有的記憶體,必須使用兩個16-bit暫存器。

這一設計上的折衷方案導致了今天的段-偏移量格局。最初的設計中,其中一個暫存器只有4-bit有效,然而為了簡化程式,兩個暫存器都是16-bit有效,並在執行時求出加權和來標識20-bit地址。

偏移量是16-bit的,因此,一個段是64KB。下面的圖可以幫助理解20-bit地址是如何形成的:

段-偏移量標識的地址通常記做 段:偏移量 的形式。

例如:

線切割工藝中,計算鉬絲偏移量,即鉬絲的直徑.

熱門詞條

聯絡我們