第二章:寄存器(CPU工作原理)03
?讓編程改變世界
Change the world by program
?
物理地址
CPU訪問內存單元時要給出內存單元的地址。所有的內存單元構成的存儲空間是一個一維的線性空間。 我們將這個唯一的地址稱為物理地址。 ?16位結構的CPU
概括的講,16位結構描述了一個CPU具有以下幾個方面特征: 1、運算器一次最多可以處理16位的數據。 2、寄存器的最大寬度為16位。 3、寄存器和運算器之間的通路是16位的。 ?8086CPU給出物理地址的方法
8086有20位地址總線,可傳送20位地址,尋址能力為1M。 8086內部為16位結構,它只能傳送16位的地址,表現出的尋址能力卻只有64K。 ?問題:那么,8086CPU如何用內部16位的數據轉換成20位的地址呢?
自問自答:8086CPU采用一種在內部用兩個16位地址合成的方法來形成一個20位的物理地址~ [caption id="attachment_257" align="aligncenter" width="300"]
8086CPU讀寫內存時,發生了這么一些事:
CPU中的相關部件提供兩個16位的地址,一個稱為段地址,另一個稱為偏移地址;
段地址和偏移地址通過內部總線送入一個稱為地址加法器的部件;
地址加法器將兩個16位地址合并成一個20位的地址;
?地址加法器工作原理
? 地址加法器合成物理地址的方法:物理地址=段地址×16+偏移地址 例如:8086CPU訪問地址為123C8H的內存單元 [caption id="attachment_258" align="aligncenter" width="300"]

一個數據的二進制形式左移1位,相當于該數據乘以2;
一個數據的二進制形式左移N位,相當于該數據乘以2的N次方;
地址加法器如何完成段地址×16的運算?沒錯,以二進制形式存放的段地址左移4位。
? 一個饅頭引發的分析…… 經過進一步的思考,我們可以看出:一個數據的十六進制形式左移1位,相當于乘以16;
一個數據的十進制形式左移1位,相當于乘以10;
一個數據的X進制形式左移1位,相當于乘以X。
?“段地址×16+偏移地址=物理地址”的本質含義
?兩個比喻說明:
說明“基礎地址+偏移地址 = 物理地址” 的思想:第一個比喻 比如說,學校、體育館同在一條筆直的單行路上(學校位于路的起點0米處)。 讀者在學校,要去圖書館,問我那里的地址,我可以用幾種方式描述這個地址? [caption id="attachment_260" align="aligncenter" width="300"]

