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

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

      對於一個彙編程式設計師來說,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的邏輯結構、形成實體地址的方法、相關的暫存器以及一些指令。