-
1 # an艾尼科技
-
2 # 查無實據ko
你好,一級偏移以及二級偏移其實本質上都是偏移,只是一個搜尋到的是‘地址’,而另一個搜尋到的是‘資料’而已。具體說就是如果有用到二級偏移,那就好比,第一級指向的是一個人所住的地址(包括小區及門牌號),但是不知道這個人是誰。要想知道這個人是誰,你就得根據這個確切地址去問問看到底住著是誰,這也就是所說的第二級。其實啊,之所以有時候用到二級偏移,主要考慮更合理的存取資料。呵呵,不知這樣解釋符不符合你的要求。
-
3 # 歡囍剪輯
計算機組合語言中的偏移量定義為:把儲存單元的實際地址與其所在段的段地址之間的距離稱為段內偏移,也稱為"有效地址或偏移量"。
段地址左移四位,與有效地址相加,就構成了邏輯地址。一般而言,段地址是cpu自己獨立編制的,但是偏移量是程式設計師編寫的。偏移量就是程式的邏輯地址與段首的差值。
在早期的8086中地址線是20位的,而段地址是16位。在十六進位制下就是4位。這樣一個段暫存器就不能完整的描述出記憶體的地址。所以就和通用暫存器配用。偏移量存在通用暫存器中,段地址則存在段暫存器中。而地址首的五位(十六進位制下,二十地址線是五位)有個特點,即末尾總是零,所以就取前四位當做段地址。正好是段地址的儲存空間大小。所以在上圖中,按照地址儲存時的分法,倒過來組合,即左移四位(二進位制下,十六進位制是一位。),比如段地址為1001H(H十六進位制之意),左移一位(乘以16),即補零變為10010H,假設偏移地址是1010H,則實際物理地址就是11100H了。形象來說,段地址是頭,偏移量是實際位置相對頭的位置。
在真實模式中,記憶體比保護模式中的結構更令人困惑。記憶體被分割成段,並且,操作記憶體時,需要指定段和偏移量。
段-暫存器這種格局是早期硬體電路限制留下的一個傷疤。地址匯流排在當時有20-bit。然而20-bit的地址不能放到16-bit的暫存器裡,這意味著有4-bit必須放到別的地方。因此,為了訪問所有的記憶體,必須使用兩個16-bit暫存器。
這一設計上的折衷方案導致了今天的段-偏移量格局。最初的設計中,其中一個暫存器只有4-bit有效,然而為了簡化程式,兩個暫存器都是16-bit有效,並在執行時求出加權和來標識20-bit地址。
偏移量是16-bit的,因此,一個段是64KB。下面的圖可以幫助理解20-bit地址是如何形成的:
段-偏移量標識的地址通常記做 段:偏移量 的形式。
例如:線切割工藝中,計算鉬絲偏移量,即鉬絲的直徑.
-
4 # 朱帥1258
計算機組合語言中的偏移量定義為:把儲存單元的實際地址與其所在段的段地址之間的距離稱為段內偏移,也稱為“有效地址或偏移量”。
段地址左移四位,與有效地址相加,就構成了邏輯地址。一般而言,段地址是cpu自己獨立編制的,但是偏移量是程式設計師編寫的。偏移量就是程式的邏輯地址與段首的差值。
在早期的8086中地址線是20位的,而段地址是16位。在十六進位制下就是4位。這樣一個段暫存器就不能完整的描述出記憶體的地址。所以就和通用暫存器配用。偏移量存在通用暫存器中,段地址則存在段暫存器中。
擴充套件資料
偏移量是16-bit的,因此,一個段是64KB。偏移量存在通用暫存器中,段地址則存在段暫存器中。而地址首的五位(十六進位制下,二十地址線是五位)有個特點,即末尾總是零,所以就取前四位當做段地址。正好是段地址的儲存空間大小。
在真實模式中,記憶體比保護模式中的結構更令人困惑。記憶體被分割成段,並且,操作記憶體時,需要指定段和偏移量。
段-暫存器這種格局是早期硬體電路限制留下的一個傷疤。地址匯流排在當時有20-bit。然而20-bit的地址不能放到16-bit的暫存器裡,這意味著有4-bit必須放到別的地方。因此,為了訪問所有的記憶體,必須使用兩個16-bit暫存器。
回覆列表
計算機組合語言中的偏移量定義為:把儲存單元的實際地址與其所在段的段地址之間的距離稱為段內偏移,也稱為“有效地址或偏移量”。
段地址左移四位,與有效地址相加,就構成了邏輯地址。一般而言,段地址是cpu自己獨立編制的,但是偏移量是程式設計師編寫的。偏移量就是程式的邏輯地址與段首的差值。
在早期的8086中地址線是20位的,而段地址是16位。在十六進位制下就是4位。這樣一個段暫存器就不能完整的描述出記憶體的地址。所以就和通用暫存器配用。偏移量存在通用暫存器中,段地址則存在段暫存器中。