第二章 寄存器

  • 一.通用寄存器

  • 通用寄存器一般用來存放通常性的數據。

  • 二.字在寄存器中的存儲

    出於對兼容性的考慮,8086CPU能夠一次性處理兩種尺寸的數據:程序員

  • 1.字節:記爲byte,一個字節由8個比特(即二進制位)組成,能夠存在8位寄存器中。
  • 2.字:記爲word,一個字由兩個字節組成,這兩個字節分別稱爲這個字的高位字節和低位字節。
  •  

    三.物理地址

    CPU經過地址總線送入存儲器的必須是一個內存單元的物理地址。 在CPU向地址總線上發出物理地址以前,必須在內部先造成這個物理地址。 不一樣的CPU能夠有不一樣的造成物理地址的方式。編程

    16位結構的CPU

    • 16位結構的CPU具備下面幾方面的結構特性:spa

    • 運算器一次最多能夠處理16位的數據
    • 寄存器最大寬度爲16位
    • 寄存器和運算器之間的通路爲16位
  •  

    內存單元的地址在送上地址總線以前,必須在CPU中處理、傳輸、暫時存放,對於16位CPU,能一次性處理、傳輸、暫時存儲16位的地址。指針

     8086CPU給出物理地址的方法

    8086CPU有20位地址線,能夠傳送20位地址,達到1MB的尋址能力。
    8086CPU又是16位結構,在內部一次性處理、傳輸、暫時存儲的地址爲16位。
    從8086CPU的內部結構來看,若是將地址從內部簡單地發出,那麼它只能送出16位的地址,表現出的尋址能力只有64KB。
    事實上,8086CPU採用一種在內部用兩個16位地址合成的方法來造成一個20位的物理地址。code

  • 8086CPU相關部件的邏輯結構如圖所示:  當8086CPU要讀寫內存時:
    (1).CPU中的相關部件提供兩個16位地址,一個稱爲段地址,一個稱爲偏移地址
    (2).段地址和偏移地址經過內部總線送入一個稱爲地址加法器的部件
    (3).地址加法器將兩個16位地址合併成喲個20位物理地址
    (4).地址加法器經過內部總線將20位物理地址送入輸入輸出控制電路
    (5).輸入輸出控制電路將20位物理地址送上地址總線
    (6).20位物理地址被地址總線傳送到存儲器
    地址加法器採用物理地址=段地址X16+偏移地址的方法用段地址和偏移地址合成物理地址內存

    四.段的概念

    "段地址"中的「段」的概念,其實來自於CPU。內存並無分段,段的劃分來自於CPU。class

    五.段段寄存器

    段地址在8086CPU的段寄存器中存放。
    8086有4個段寄存器:CS,DS,SS,ES。兼容性

    六.CS和IP

    當8086CPUCPU要訪問內存時由這4個段寄存器提供內存單元的段地址。原理

  • CS和IP是8086CPU中兩個最關鍵的寄存器,他們指示了CPU當前要讀取指令的地址。二進制

    • CS爲代碼段寄存器
    • IP爲指令指針寄存器
  •  

    在8086PC中,任意時刻,設CS中的內容爲M,IP中的內容爲N,8086CPU將從內存M×16+N單元開始,讀取一條指令並執行。
    也能夠描述爲:8086機中,任意時刻,CPU將CS:IP指向的內容看成指令執行。

  • 如圖顯示了8086CPU讀取、執行指令的工做原理:

    • 8086CPU當前狀態:CS中的內容爲2000H,IP中的內容爲1000H
    • 內存20000H~20009H單元中存放着可執行的機器碼
  •  

    七.修改CS、IP的指令

    在CPU中,程序員可以用指令讀寫的部件只有寄存器,程序員能夠經過改變寄存器的內容實現對CPU的控制。 CPU從何處執行指令是由CS、IP中的內容決定的,程序員能夠經過改變CS、IP中的內容來控制CPU執行目標指令。
    8086CPU大部分寄存器的值,均可以經過mov指令來改變。mov指令被稱爲傳送指令。
    mov指令不能用於設置CS、IP的值,緣由是:8086沒有提供這樣的功能。
    可以改變CS、IP的內容的指令被統稱爲轉移指令。

    八.代碼段

    對於8086PC機,在編程時,能夠根據須要,將一組內存單元定義爲一段。能夠將長度爲N(N<=64KB5)的一組代碼,存在一組地址連續、起始地址爲16的倍數的內存單元中。存在這段內存單元中的代碼能夠成爲一個代碼段。

     

    將一段內存看成代碼段,僅僅是咱們在編程時的一種安排,CPU並不會因爲這種安排,就自動的將咱們定義的代碼段中的指令看成指令來執行。
    CPU只認被CS:IP指向的內存單元中的內容爲指令。
    要讓CPU執行咱們放在代碼段中的指令,必需要將CS:iP指向所定義的代碼段中的第一條指令的首地址。

  • 九.總結
  • 段地址在8086CPU的段寄存器中存放。當8086CPU要訪問內存時,由段寄存器提供內存單元的段地址。8086CPU有4個段寄存器,其中CS用來存放指令的段地址。
  • CS存放指令的段地址,IP存放指令的偏移地址。
  • 8086機中,任意時刻,CPU將CS:IP指向的內容看成指令執行
  • 8086CPU的工做過程:
    (1)從CS:IP指向內存單元讀取指令,讀取的指令進入指令緩衝器
    (2)IP指向下一條指令
    (3)執行指令
    (4)轉到步驟(1),重複這個過程
  • 8086CPU提供轉移指令修改CS、IP的內容。
相關文章
相關標籤/搜索