什麼是地址偏移量?有什麼作用和價值?

  • 作者:由 匿名使用者 發表于 攝影
  • 2022-06-22

什麼是地址偏移量?有什麼作用和價值?lxhuzz126 2014-01-05

簡單來說,地址偏移量就是在當前段內的記憶體單元地址相對於段守單元的位元組距離,在以8086CPU中,也稱為有效地址EA。其作用就是提供一個邏輯地址在當前記憶體段內的偏移地址。這是與8086CPU所採用的記憶體分段技術密切相關的。

我們知道,8086CPU字長為16位,但其地址匯流排位數為20位,記憶體空間最大可以到2^20=1MB,即20位的物理地址。但因為字長16位的限制,其內部所有的暫存器也都是16位。為了解決20位物理地址的管理問題,記憶體管理採用了分段技術:將1M位元組的記憶體空間分為若干個記憶體段,每個段最大可以使用16位的暫存器來管理(最大可達2^16=64K),就有了地址偏移量,可以用一個16位的暫存器來管理偏移地址;每段起始處的物理地址要求必須是16的倍數,這樣,其高16位地址就可以存入一個16位的段暫存器來管理,稱為段地址。這樣,就形成了記憶體單元地址表示的第二種便是形式: 邏輯地址=段地址:偏移量。

一般,組合語言程式設計時,使用邏輯地址,執行指令訪問記憶體時,CPU內部的地址轉換部件會自動將邏輯地址變換為物理地址,進行記憶體訪問。

在8086組合語言中,常用的段暫存器與地址偏移量暫存器的組合是CS:IP,DS:BX,SS:SP。附加段不常用。

Top