首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

8086 CPU 物理地址形成:段地址與偏移地址的加法器原理

     編輯:程式設計綜合問答

核心機制

8086 為 16 位處理器,內部寄存器寬度 16 位,但地址總線 20 位(1MB 寻址空間)。

物理地址計算

物理地址 = (段地址 × 16) + 偏移地址
         = (段地址 << 4) + 偏移地址

段地址存放在段寄存器 (CS, DS, SS, ES) 中,偏移地址存放在通用寄存器 (IP, BX, SI, DI, BP, SP) 中。

為什麼 20 位結果不存入寄存器?

  • ALU(算術邏輯單元)內部有 20 位加法器,直接將結果輸出到地址總線。
  • 段地址與偏移地址分別佔用 16 位寄存器,合成的 20 位物理地址不進入寄存器,僅在總線傳輸周期存在。
  • 這是分段存儲管理的硬體實現:程序員見到的邏輯地址 (段:偏移),硬體透明轉換為物理地址。

示例

CS = 0x1230, IP = 0x0045
物理地址 = 0x12300 + 0x0045 = 0x12345 (20 位)

DS = 0x5678, SI = 0x9ABC
物理地址 = 0x56780 + 0x9ABC = 0x6024C

相關概念

術語含義
段地址16 位,左移 4 位形成基址
偏移地址16 位,段內相對位置
邏輯地址段:偏移 表示法,如 1230:0045
物理地址20 位,實際加芯片選中線
段寄存器CS(code), DS(data), SS(stack), ES(extra)

保護模式差異

80286+ 引入描述符表 (GDT/LDT),段寄存器存選擇子,不再直接左移 4 位,支持 24/32/64 位物理地址。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved