寄存器(CPU工做原理)

1.通用寄存器

8086CPU全部一共有14個寄存器分別是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW,全部的寄存器都是16位的,能夠存放兩個字節(一個字)。spa

AX、BX、CX、DX一般用來存放通常性數據被稱爲通用寄存器。翻譯

AX通用寄存器存儲二進制方式爲:3d

 

爲了保證兼容性,這四個寄存器均可以分爲兩個獨立的8位寄存器使用。指針

1)AX能夠分爲AH和AL,分別是高8位和低8位blog

2)BX能夠分爲BH和BL內存

3)CX能夠分爲CH和CL博客

4)DX能夠分爲DH和DL兼容性

 

那如何向下兼容8位寄存器呢?就是將AH所有填0,只用AL部分。二進制

AX的低8位(0~7位)構成了AL寄存器,高8位(8~15位)構成了AH寄存器。方法

AH和AL寄存器是能夠獨立使用的8位寄存器。如何不能獨立使用那麼就不能兼容。

 

2.幾條簡單的彙編指令

彙編指令不分大小寫

下面是幾條簡單的彙編指令:

這裏須要注意的是,彙編的指令須要從後往前看,例如mov ax,18正確的順序是將18送入ax中。

 兩道例題:

(1)

mov ax,8226H

mov bx,8226H

add ax,bx

結果ax中存放的數是044CH

由於即便8226H+8226H=1044CH可是ax爲16位寄存器,只能存放044CH,多出的1這裏不作講解。之後的博客中會說。

(2)

mov al,00C5H

add al,93H

那麼結果al中存放的數據不是0158H而是0058H,由於這裏用的是al寄存器,ax的低8位寄存器,因此高8位爲0,至於多出的那個1這裏先不作講解。之後的博客中會說。

 

8086CPU給出物理地址的方法:

將16位的段地址和16位的偏移地址經過地址加法器給出20位的物理地址。

 

3.地址加法器合成物理地址的方法

物理地址=段地址*16=偏移地址

 

 段地址*16就是向左移一位,若是是二進制數則就是向左移四位

雖然「段地址」這個名詞中包含了「段」這個字,可是並非說將內存分爲一個個的段。

兩點須要注意:

(1)段地址*16必然是16的倍數,因此一個段的起始地址也必定是16的倍數;

(2)偏移地址爲16位,16位地址的尋址能力爲64KB,因此一個段的長度最大爲64KB。

 

從這個圖中能夠得出結論:CPU能夠經過不一樣的段地址和偏移地址造成同一個物理地址。

 

4.段寄存器

段寄存器顧名思義就是提供段地址的寄存器,8086CPU有4個段寄存器,分別是CS、DS、SS、ES。

CS和IP是8086CPU中最關鍵的寄存器,它們指示了CPU當前要讀取指令的地址。

CS爲代碼段寄存器,IP爲指令指針寄存器(偏移地址寄存器)

當8086CPU啓動時或者復位時,CS=FFFFH,IP=0000H

傳送指令mov不能修改CS和IP寄存器裏的值,可是8086CPU提供的一個轉移指令jmp指令來修改CS與IP寄存器的值。

 

5.DEBUG中經常使用指令

R命令查看、改變CPU寄存器的內容;

D命令查看內存中的內容;

E命令改寫內存中的內容;

U命令將內存中的機器指令翻譯成彙編指令;

T命令執行一條機器指令;

A命令以彙編指令的格式在內存中寫入一條機器指令;

相關文章
相關標籤/搜索