2.3通用寄存器上
本節(jié)必須掌握的知識點:
u8位、16位鞭呕、32位通用寄存器
u寄存器邏輯結(jié)構(gòu)圖
u寄存器的編號文捶、順序、及能存儲數(shù)據(jù)的最大值
? ? 計算機存儲數(shù)據(jù)的地方有三個:處理器(CPU)道伟、內(nèi)存和硬盤迹缀。處理器的讀寫速度比內(nèi)存快,內(nèi)存的讀寫速度高于硬盤蜜徽。寄存器就是處理器中用來存儲數(shù)據(jù)的地方祝懂,寄存器的讀寫速度要高于內(nèi)存。那么寄存器有多大拘鞋,取決于計算機的位數(shù)砚蓬,在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個寄存器通常存放一般性的數(shù)據(jù),被稱為通用寄存器响鹃。它們都有各自的用途驾霜。【本節(jié)不做詳細介紹买置,用到時會詳細介紹】
EAX粪糙、ECX、EDX忿项、EBX為數(shù)據(jù)寄存器蓉冈;
ESP城舞、EBP為指針寄存器;
ESI寞酿、EDI變址寄存器家夺。
每個寄存器都有自己的邏輯結(jié)構(gòu),接下來看一下它們的邏輯結(jié)構(gòu)是什么樣的伐弹。
2.3.2【寄存器邏輯結(jié)構(gòu)】
以EAX為例拉馋,寄存器的邏輯結(jié)構(gòu)圖如圖2-3-1所示。
EAX寄存器它本身是一個32位寄存器惨好,那么它可以存儲一個32位的數(shù)據(jù)煌茴。EAX寄存器是在32位處理器中工作的,它的上一代處理器是16位處理器昧狮,而16位處理器的上一代是8位處理器景馁,為了保證兼容,使之前的處理器經(jīng)過程序的修改可以在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為例认轨,寄存器的邏輯結(jié)構(gòu)圖如圖2-3-2所示。
同理可得出EBP月培、ESI好渠、EDI昨稼。
·EBP可分為:SP;
·ESI可分為:SI拳锚;
·EDI可分為:DI。
舉例介紹了個別的寄存器邏輯結(jié)構(gòu)寻行,接下來我們來畫出32位霍掺、16位、8位的通用寄存器邏輯結(jié)構(gòu)圖拌蜘。
2.3.3【通用寄存器邏輯結(jié)構(gòu)圖】
???通用寄存器邏輯結(jié)構(gòu)必須記住杆烁,對以后學(xué)習(xí)有幫助,如圖2-3-3所示
從圖2-3-3可以看出简卧,這些寄存器排列是有順序的兔魂,都是在0~31位之間,接下來我們來簡單介紹他們各自存在的順序和編號举娩。切記它們的編號和順序不能錯析校,就像你的身份證號碼,是唯一的铜涉。
2.3.4【寄存器有自己的編號】
32位寄存器有自己的編號智玻,16位寄存器也有屬于自己的獨立的編號,同樣8位寄存器也有屬于自己的編號芙代。當然吊奢,他們是重疊的,當改變了32位的寄存器纹烹,相應(yīng)的16位寄存器也會跟著改變页滚。切記它們的順序不能記錯。
以通用寄存器為例铺呵,展示寄存器的編號裹驰,如圖2-3-4所示。
根據(jù)圖2-3-4簡單說明一下陪蜻,32位的寄存器有8個:EAX邦马,ECX,EDX,EBX,ESP瓷马,EBP夷蚊,ESI,EDI议经,每個寄存器都對應(yīng)一個編號:0號,1號,2號掘宪,3號……還有16位的寄存器:AX蛾扇,CX,DX魏滚,BX镀首,SP,BP鼠次,SI更哄,DI。對應(yīng)的編號:0號腥寇,1號成翩,2號,3號……同樣8位的寄存器:AL赦役,CL麻敌,DL,BL掂摔,AH术羔,CH,DH棒呛,BH聂示。對應(yīng)的編號:0號,1號簇秒,2號鱼喉,3號……。
我們知道了通用寄存器有順序有編號趋观,那么它們有各自的名稱及用途嗎扛禽?
2.3.5【32位通用寄存器的指定名稱及用途】
·EAX:累加器(Accumulator),操作數(shù)和結(jié)果數(shù)據(jù)累加器;
·ECX:計數(shù)(Counter),字符串和循環(huán)操作的計數(shù)器;
·EDX:用于保存乘法形成的部分結(jié)果或者除法之前部分被除數(shù);
·EBX:基地址(Base), DS段的數(shù)據(jù)指針,在內(nèi)存尋址時存放基地址;
·ESP:堆棧(Stack)指針,被形象地稱為棧頂指針;
·EBP:基址指針(BASE POINTER), SS段的數(shù)據(jù)指針;
·ESI:字符串操作的源(Source)指針,SS段的數(shù)據(jù)指針;
·EDI:字符串操作的目標(Destination)指針,ES段的數(shù)據(jù)指針.
【本節(jié)只是簡單的描述,詳細知識請參考Intel白皮書】
我們知道了通用寄存器有順序有編號有名字有用途皱坛,那么它們有多大哪编曼?
2.3.6【寄存器能存儲數(shù)據(jù)的最大值】
·8位寄存器能存儲數(shù)據(jù)的最大值為28;
·16位寄存器能存儲數(shù)據(jù)的最大值為216剩辟;
·32位寄存器能存儲數(shù)據(jù)的最大值為232掐场。
總結(jié):本節(jié)需要掌握的內(nèi)容比較多希望大家能記住,對以后學(xué)習(xí)有幫助贩猎。
u下一節(jié)介紹通用寄存器下熊户。
練習(xí):
1、自己在紙上能夠按順序?qū)懗?位吭服、16位嚷堡、32位通用寄存。
2艇棕、自己在紙上畫一遍8位蝌戒、16位串塑、32位通用寄存器邏輯圖并熟練寫出它們對應(yīng)的編號。