日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

寄存器(cpu工作原理)

發布時間:2023/12/18 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 寄存器(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工作原理)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。