標籤:程式碼片段 使用 儲存空間 物理 自動 加法 cpu 輸出 合成
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
部落格園第二章寄存器