寄存器(cpu工作原理)
來源:王爽老師的《匯編語言》。
1、一個典型的CPU由運算器、控制器、寄存器等器件組成,這些器件靠內部總線相連。
區別:
內部總線實現CPU內部各個器件之間的聯系。
外部總線實現CPU和主板上其它器件的聯系。
8086CPU有14個寄存器 它們的名稱為:
? ?AX、BX、CX、DX、SI、DI、SP、BP、
? ?IP、CS、SS、DS、ES、PSW。
8086CPU所有的寄存器都是16位的,可以存放兩個字節,一個字節8位。
AX、BX、CX、DX 通常用來存放一般性數據被稱為通用寄存器。
一個16位寄存器所能存儲的數據的最大值為多少??
因為每一位存放的數據是0或1,那么最大的數值自然就是 1111 1111 1111 1111(2),也就是2^16-1。
?
2、通用寄存器(重點)
8086上一代CPU中的寄存器都是8位的,為保證兼容性,
這四個寄存器都可以分為兩個獨立的8位寄存器使用。
AX可以分為AH和AL;
BX可以分為BH和BL;
CX可以分為CH和CL;
DX可以分為DH和DL。
AX的低8位(0位~7位)構成了AL寄存器,高8位(8位~15位)構成了AH寄存器。
AH和AL寄存器是可以獨立使用的8位寄存器,如果當成是8位寄存器使用,那么他們就是獨立的,沒有任何關系。
一個8位寄存器所能存儲的數據的最大值是多少?二進制數值 1111 1111 ,也就是?2^8-1。
3、字在寄存器中的存儲
注意:在進行數據傳送或運算時,要注意指令的操作數的位數要匹配。
4、物理地址的表示(重點)
CPU訪問內存單元時要給出內存單元的地址,所有的內存單元構成的存儲空間是一個一維的線性空間。
我們將這個唯一的地址稱為物理地址。
不同的CPU有不同的形成物理地址的方式。
(1)16位結構的CPU
8086內部為16位結構,它只能傳送16位的地址,表現出的尋址能力卻只有64K。
8086外部有20位地址總線,可傳送20位地址,尋址能力為1M。
那么,8086CPU如何用內部16位的數據,轉換成20位的地址呢?
8086CPU采用一種在內部用兩個16位地址合成的方法來形成一個20位的物理地址。
段地址+偏移地址 -> 地址加法器 -> 20位的物理地址。
地址加法器合成物理地址的方法:段地址×16+偏移地址=物理地址。
“段地址×16”有一個更為常用的說法就是數據左移4位。(二進制位)
二進制的數據左移4位,意味著乘以2^4=16。
這樣做的目的主要是為了彌補內部總線16位的缺陷而設計的。
5、關于段空間
內存沒有分段,段的劃分來自于CPU,
由于8086CPU用“(段地址×16)+偏移地址=物理地址”的方式給出內存單元的物理地址,
使得我們可以用分段的方式來管理內存。
以后,在編程時可以根據需要,將若干地址連續的內存單元看作一個段,
用段地址×16定位段的起始地址(基礎地址),用偏移地址定位段中的內存單元。
(1)段地址×16 必然是 16的倍數,所以一個段的起始地址也一定是16的倍數;
(2)偏移地址為16位,16 位地址的尋址能力為 64K,所以一個段的長度最大為64K。
CPU可以用不同的段地址和偏移地址形成同一個物理地址。
如果給定一個段地址,僅通過變化偏移地址來進行尋址,最多可以定位多少內存單元?
因為偏移地址16位,變化范圍為0~FFFFH,僅用偏移地址來尋址最多可尋64K個內存單元。
比如:給定段地址1000H,用偏移地址尋址,CPU的尋址范圍為:10000H~1FFFFH。
6、地址的描述
在8086PC機中,存儲單元的地址用兩個元素來描述。即段地址和偏移地址。
“數據在21F60H內存單元中。”對于8086PC機的兩種描述:
(a)數據存在內存2000:1F60單元中;
(b)數據存在內存的2000段中的1F60H單元中。
可根據需要,將地址連續、起始地址為16的倍數的一組內存單元定義為一個段。
?
7、段寄存器就是提供段地址的。
8086CPU有4個段寄存器:?CS、DS、SS、ES。
CS和IP是8086CPU中最關鍵的寄存器,它們指示了CPU當前要讀取指令的地址。
CS為代碼段寄存器,IP為指令指針寄存器。
在 8086CPU 加電啟動或復位后( 即 CPU剛開始工作時)CS和IP被設置為CS=FFFFH,IP=0000H。
即在8086PC機剛啟動時,CPU從內存FFFF0H單元中讀取指令執行。
FFFF0H單元中的指令是8086PC機開機后執行的第一條指令。
8、修改CS,IP
mov指令不能用于設置CS、IP的值,8086CPU沒有提供這樣的功能。
8086CPU為CS、IP提供了另外的指令來改變它們的值:轉移指令
JMP 段地址:偏移地址
JMP 2AE3:3
功能:用指令中給出的段地址修改CS,偏移地址修改IP。CS = 2AE3H, IP = 0003H。
僅修改IP的內容:
jmp 某一合法寄存器
jmp ax ? (類似于 mov IP,ax)
功能:用寄存器中的值修改IP。
8086機中,任意時刻,CPU將CS:IP指向的內容當作指令執行。
9、關于debug指令(Win7沒有這個指令,XP才有)
R命令查看、改變CPU寄存器的內容;
D命令查看內存中的內容;
E命令改寫內存中的內容;
U命令將內存中的機器指令翻譯成匯編指令;
T命令執行一條機器指令;
A命令以匯編指令的格式在內存中寫入一條機器指令。
總結
以上是生活随笔為你收集整理的寄存器(cpu工作原理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决 linux 下安装 node 报:
- 下一篇: 寄存器、存储器、内存的区别