1. 程式人生 > >博客園第二章寄存器

博客園第二章寄存器

總線 一位 操作 管理 通用 輸入 信息處理 獨立 工作

CPU中的運算器、控制器、寄存器等器件考內部總線相連。

在CPU中:運算器進行信息處理;寄存器進行信息存儲;控制器控制各種器件進行工作;內部總線連接各種器件在他們之間進行數據的傳輸,

不同的CPU種寄存器的個數結構是不相同的。8086CPU由14個寄存器分別是:AX、BX、CX、DX、SI、DI、SP、IP、CS、SS、DS、ES、PSW

一.通用寄存器

8086CPU中所有的寄存器都是16位的,可以存放兩個字節。AX、BX、CX、DX這四個寄存器通常用於存放一般性的數據,被稱為通用寄存器。

AX、BX、CX、DX都可以分為兩個獨立使用的8位寄存器(H表示的是高8位,L表示的是低8位)

cpu在執行指令時會認為ah和al是兩個互不相關的寄存器。不能錯誤地認為,諸如add al, 93H指令產生的進位會存儲與ah中,add al, 93H進行的是8位運算。(最高位丟失,指的是進位之不能在8位寄存器中保存,但是CPU並不真的丟棄這個進位值)在進行數據傳送或運算時,要註意兩個操作對象的為數應當是一致的。

二.8086CPU給出物理地址的方法

1.8086CPU時是16位結構的CPU

*運算器一次最多可以處理16位的數據

*寄存器的最大寬度是16位

*寄存器和運算器之間的通路是16位

2.8086CPU有20位地址總線

8086CPU采用一種用兩個16位地址合成的方法來形成一位20位的物理地址

(1)CPU中的相關部件提供兩個16位的地址,一個稱為段地址,另一個稱為偏移地址;

(2)段地址和偏移地址通過內部總線送入一個成為地址加法器的部件;

(3)地址加法器將兩個16位地址和成為一個20位的物理地址

(4)地址加法器通過內部總線將20位的物理地址送入輸入輸出控制電路;

(5)輸入輸出控制電路將20位的物理地址送上地址總線;

(6)20為物理地址為地址總線傳到存儲器。

地址加法器采用 物理地址=段地址*16+偏移地址 合成物理地址

(內存中並沒有分段,端的劃分來自於CPU,由於8086CPU用“段地址*16+偏移地址=物理地址”的方式給出內存單元的物理地址,使得我們可以用分段的方法來管理內存。)

三.CS和IP

CS偽代碼段寄存器,IP位指令指針寄存器。

(1)8086機中,任意時刻,設CS總的內容為M,IP中的內容位N,8086CPU將從內存M*16+N單元開始讀取一條指令並執行。

1.CS、IP中的內容送入地址加法器中完成:段地址*16+偏移地址=物理地址

2.地址加法器將物理地址送入輸入輸出控制電路

3.輸入輸出控制電路將物理地址送上地址總線

4.內存從指定單元將機器指令通過數據總線傳入cpu

5.讀取一條指令後IP的之自動增加,意識CPU可以讀取下一條指令

(2)修改CS、IP的指令

若想同時修改cs、ip中的內容可以用形如“jmp段地址:偏移地址”的指令完成

eg.jmp 2AE3:3,執行後CS=2AE3H,iP=0003H.

若僅想修改IP的內容可用 jmp 某一合法寄存器 的指令完成

jmp ax,指令執行前 ax=1000H CS=2000H IP=0003H

指令執行後ax=1000H CS=2000H IP=1000H

博客園第二章寄存器