1. 程式人生 > >第二章 寄存器相關內容總結

第二章 寄存器相關內容總結

部件 字節 關系 8086cpu pc機 模式 指針 簡單的 代碼段

對於一個匯編程序員來說,CPU中的主要部件是寄存器。寄存器是CPU中程序員可以用指令讀寫的部件。程序員通過改變各種寄存器中的內容來實現對CPU的控制。不同的CPU,寄存器的個數、結構是不相同的。8086CPU有14個寄存器,每個寄存器有一個名稱。

8086CPU的所有寄存器都是16位的,可以存放兩個字節。AX、BX、CX、DX、這4個寄存器通常用來存放一般性的數據,被稱為通用寄存器。出於對兼容性的考慮,8086CPU可以一次性處理以下兩種尺寸的數據。字節:記為byte,一個字節由8個bit組成,可以存在8位寄存器中。字:記為word,一個字由兩個字節組成,這兩個字節分別稱為這個字的高位字節和低位字節。

我們知道,CPU訪問內存單元時,要給出內存單元的地址。所有的內存單元構成的存儲空間是一個一維的線性空間,每一個內存單元在這個空間中都有唯一的地址,我們將這個唯一的地址稱為物理地址。CPU通過地址總線送入存儲器的,必須是一個內存單元的物理地址。在CPU向地址總線上發出物理地址之前,必須要在內部先形成這個物理地址。不同的CPU可以有不同的形成物理地址的方式。

8086CPU有20位地址總線,可以傳送20位地址,達到1MB尋址能力。8086CPU又是16位結構,在內部一次性處理、傳輸、暫時存儲的地址為16位。從8086CPU的內部結構來看,如果將地址從內部簡單的發出,那麽它只能送出16位的地址,表現出的尋址能力只有64KB。8086CPU采用一種在內部用兩個16位地址合成的方法來形成一個20位的物理地址。

“段地址*16+偏移地址=物理地址”的本質含義是:CPU在訪問內存時,用一個基礎地址(段地址*16)和一個相對於基礎地址的偏移地址相加,給出內存單元的物理地址。更一般的說,8086CPU的這種尋址功能是“基礎地址+偏移地址=物理地址”尋址模式的一種具體實現方案。8086CPU中,段地址*16可看作是基礎地址。

所以總結來說,CPU訪問內存單元時,必須向內存提供內存單元的物理地址。8086CPU在內部用段地址和偏移地址移位相加的方法形成最終的物理地址。CPU可以用不同的段地址和偏移地址形成同一個物理地址。偏移地址16位,變化範圍為0~FFFFH,僅用偏移地址來尋址最多可尋64KB個內存單元。比如給定段地址1000H,用偏移地址尋址,CPU的尋址範圍為:10000H~1FFFFH。在8086PC機中,存儲單元的地址用兩個元素來描述,即段地址和偏移地址。

CS和IP是8086CPU中兩個最關鍵的寄存器,它們指示了CPU當前要讀取指令的地址。CS為代碼段寄存器,IP為指令指針寄存器,從名稱上我們可以看出它們和指令的關系。CS存放指令的段地址,IP存放指令的偏移地址。8086機中,任意時刻,CPU將CS:IP指向的內容當做指令執行。

通過這一章的學習,我們主要從CPU如何執行指令的角度了解了8086CPU的邏輯結構、形成物理地址的方法、相關的寄存器以及一些指令。

第二章 寄存器相關內容總結