2.3 通用寄存器上

2.3 通用寄存器上

本節必須掌握的知識點:

u 8位、16位、32位通用寄存器

u 寄存器邏輯結構圖

u 寄存器的編號、順序、及能存儲數據的最大值

計算機存儲數據的地方有三個:處理器(CPU)、內存和硬盤。處理器的讀寫速度比內存快,內存的讀寫速度高於硬盤。寄存器就是處理器中用來存儲數據的地方,寄存器的讀寫速度要高於內存。那麼寄存器有多大,取決於計算機的位數,在32位計算機裡最大寬度為32位,在64位計算機裡最大寬度為64位。32位和64位CPU提供的所有寬度如下:

·32位處理器:8位 16位 32位

·64位處理器:8位 16位 32位 64位

2.3.1【32位通用寄存器】

32位處理器中:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI這8個寄存器通常存放一般性的數據,被稱為通用寄存器。它們都有各自的用途。【本節不做詳細介紹,用到時會詳細介紹】

EAX、ECX、EDX、EBX為數據寄存器;

ESP、EBP為指針寄存器;

ESI、EDI變址寄存器。

每個寄存器都有自己的邏輯結構,接下來看一下它們的邏輯結構是什麼樣的。

2.3.2【寄存器邏輯結構】

以EAX為例,寄存器的邏輯結構圖如圖2-3-1所示。

2.3 通用寄存器上

圖2-3-1

EAX寄存器它本身是一個32位寄存器,那麼它可以存儲一個32位的數據。EAX寄存器是在32位處理器中工作的,它的上一代處理器是16位處理器,而16位處理器的上一代是8位處理器,為了保證兼容,使之前的處理器經過程序的修改可以在32位處理器上運行。使得EAX寄存器包含了16位、8位的寄存器。

EAX寄存器可分為一個可獨立使用的16位寄存器:AX(16位);16位寄存器還可以分為兩個可以獨立使用的8位寄存器: AH(8位~15位為高8位)、AL(0位~7位為低8位)。

同理可得出ECX 、EDX、 EBX。

·ECX可分為:CX、CH、CL;

·EDX可分為:DX、DH、DL;

·EBX可分為:BX、BH、BL。

而ESP、EBP、ESI、EDI這四個寄存器是分成了兩段。

以ESP為例,寄存器的邏輯結構圖如圖2-3-2所示。

2.3 通用寄存器上

圖2-3-2

同理可得出EBP、ESI、EDI。

·EBP可分為:SP;

·ESI 可分為:SI;

·EDI可分為:DI。

舉例介紹了個別的寄存器邏輯結構,接下來我們來畫出32位、16位、8位的通用寄存器邏輯結構圖。

2.3.3【通用寄存器邏輯結構圖】

通用寄存器邏輯結構必須記住,對以後學習有幫助,如圖2-3-3所示

2.3 通用寄存器上

圖2-3-3

從圖2-3-3可以看出,這些寄存器排列是有順序的,都是在0~31位之間,接下來我們來簡單介紹他們各自存在的順序和編號。切記它們的編號和順序不能錯,就像你的身份證號碼,是唯一的。

2.3.4【寄存器有自己的編號】

32位寄存器有自己的編號,16位寄存器也有屬於自己的獨立的編號,同樣8位寄存器也有屬於自己的編號。當然,他們是重疊的,當改變了32位的寄存器,相應的16位寄存器也會跟著改變。切記它們的順序不能記錯。

以通用寄存器為例,展示寄存器的編號,如圖2-3-4所示。

2.3 通用寄存器上

圖2-3-4

根據圖2-3-4簡單說明一下,32位的寄存器有8個:EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI,每個寄存器都對應一個編號:0號,1號,2號,3號……還有16位的寄存器:AX,CX,DX,BX,SP,BP,SI,DI。對應的編號:0號,1號,2號,3號……同樣8位的寄存器:AL,CL,DL,BL,AH,CH,DH,BH。對應的編號:0號,1號,2號,3號……。

我們知道了通用寄存器有順序有編號,那麼它們有各自的名稱及用途嗎?

2.3.5【32位通用寄存器的指定名稱及用途】

·EAX:累加器(Accumulator),操作數和結果數據累加器;

·ECX:計數(Counter),字符串和循環操作的計數器;

·EDX:用於保存乘法形成的部分結果或者除法之前部分被除數;

·EBX:基地址(Base), DS段的數據指針,在內存尋址時存放基地址;

·ESP:堆棧(Stack)指針,被形象地稱為棧頂指針;

·EBP:基址指針(BASE POINTER), SS段的數據指針;

·ESI:字符串操作的源(Source)指針,SS段的數據指針;

·EDI:字符串操作的目標(Destination)指針,ES段的數據指針.

【本節只是簡單的描述,詳細知識請參考Intel白皮書】

我們知道了通用寄存器有順序有編號有名字有用途,那麼它們有多大哪?

2.3.6【寄存器能存儲數據的最大值】

·8位寄存器能存儲數據的最大值為28;

·16位寄存器能存儲數據的最大值為216;

·32位寄存器能存儲數據的最大值為232。

總結:本節需要掌握的內容比較多希望大家能記住,對以後學習有幫助。

u下一節介紹通用寄存器下。

練習:

1、自己在紙上能夠按順序寫出8位、16位、32位通用寄存。

2、自己在紙上畫一遍8位、16位、32位通用寄存器邏輯圖並熟練寫出它們對應的編號。


分享到:


相關文章: