寄存器的作用有哪些?
寄存器的作用有哪些?
寄存器用途
1.可將寄存器內(nèi)的數(shù)據(jù)執(zhí)行算術(shù)及邏輯運算;
2.存于寄存器內(nèi)的地址可用來指向內(nèi)存的某個位置,即尋址;
3.可以用來讀寫數(shù)據(jù)到電腦的周邊設(shè)備。
AX 累加器,得名原因是最初常使用ADD AX,n這樣的指令
CX 計數(shù)器,得名原因是最常使用CX的值作為重復(fù)操作的次數(shù)
BX 常用作地址寄存器,如MOV AX,[BX],把BX所指地址中的數(shù)取到AX中去
DX 通用寄存器
都是16位寄存器
E前綴是他們的32位版本
他們的地位都是平等的,也不僅限于規(guī)定的作用,很多時候可以通用,愛用哪個用哪個。
今天看了幾個關(guān)于cpu寄存器一些帖子,感覺上他們所說的好象沒有說明cpu寄存器的作用。我從我現(xiàn)在所了解的知識,與大家講一講,共同學(xué)習(xí)一下吧。先講CPU的一些分類。 ? ?? ???第一,從cpu的種類來分寄存器來分的話。有Motorola 68x00、Intel IA-32、SUN Sparc、Vax和IBM-370等,不同種類的cpu,都有與其對應(yīng)的寄存方法與方式。對我們來說,一般都x86的,即我常說的英特爾公司與AMD公司生產(chǎn)的cpu,這可能占世界上個人PC的90%多吧。 ? ?? ???第二,從這一條起,我們所講的寄存器都是以x86為基礎(chǔ)的,那么這種CPU內(nèi),寄存器可分為以下幾種。其一,是EAX、EBX、ECX、EDX等通用寄存器。其二呢,是CS、SS、ES等段寄存器。其三呢,是EIP,也稱為指令指針。其四呢,EFLAGS寄存器,俗稱為標(biāo)志寄存器。其五,浮點單元,這里面之所以只浮點單元,是因為在它里面還有一些小的寄存分類,主要是數(shù)學(xué)上的浮點上的計算。其六呢,MMX指令使用的8個64位寄存器。其七呢,單指令、多數(shù)據(jù)操作(SIMD,single-instruction,multiple-data)使用的8個128位XMM寄存器。 ? ?? ? 以上是CPU的一些分類的常用知識,其中,對我們大多數(shù)人來講,需要了解與知道的是x86這類的,也就是我們所說的IA-32系列CPU。也許有人會說AMD的CPU,這不用擔(dān)心,它是兼容INTEL的,這不用我們擔(dān)心的事情,那么我們主要了解的是IA-32這一類的結(jié)構(gòu),這些方面需要我們花一些時間去了解。如果我們只是需要一般的編程的話,我們了解上面這些就可以了。因為在C/C++、Java、Perl等這些編程的話,寄存器的使用一般不需要。但是如果進(jìn)行匯編語言編程的話,那我們還需要對更加深入的了解。好了,下面我開始講解一些與匯編語言編程有關(guān)寄存器的作用與結(jié)構(gòu)粗陋地講解一些,不過先要說明一些,我對這些不是很精通,我也只是一般的了解,如果大家深入的學(xué)習(xí)的話,我介紹二本書給大家。不過很難買到,只要大家用心去買,還是可以買到的,第一本是《Intel匯編語言程序設(shè)計》,我買的是第四版。第二本是Intel微系統(tǒng)結(jié)構(gòu)與匯編語言,具體的名字我記不清,是一本厚的書。它是第一本的基礎(chǔ),但是它顯得有點舊,但是它286開始介紹的。很值得去看看。如果說僅僅用一個帖子把寄存器的作用與使用說明,我則只能說我不行,但是從它的一般的使用與了解的話,我想也只是幾句話而已。 ? ?? ? 從結(jié)構(gòu)上看CPU的寄存器,它實際上是CPU的一部分。這包括后來,也是現(xiàn)在所流行的64位雙核CPU,都是如此。從內(nèi)存的使用角度上來講的話,CPU的寄存器,它是內(nèi)存的一部分,但是從快速的角度上來,寄存器它似乎不存在著地址的問題,因為是它是CPU的操作的最近的一部分,也是CPU執(zhí)行時第一個要訪問的第一個地方,但是它作用是存儲用的。只是存儲的內(nèi)容不一定是指令,還有可能是地址,或者說是一些標(biāo)志。這都是有可能的。 ? ?? ? 說上二句所謂的題外話,CPU的寄存器,從最基本上來講,它只是一個個容器而已。那么依據(jù)它的分類,可分為通用寄存器,從通用上來講,它所存儲的東西,只要它的容積所容許的話,什么都是可以存儲的,而段寄存器呢,它所存儲的只能是地址,它的作用是從尋址上可以體現(xiàn)出來,而標(biāo)志寄存器呢,那么所存儲的是與CPU的每一個執(zhí)行的指令有關(guān)。是關(guān)系到CPU每一個指令的執(zhí)行相關(guān)內(nèi)容與特殊的關(guān)聯(lián),即CPU所執(zhí)行的指令是否違規(guī),它的指令是否有進(jìn)位,它的指令是否有溢出,都是在標(biāo)志寄存器中能表現(xiàn)與表達(dá)出來。所有這些細(xì)則,只有通過學(xué)習(xí)后才能知道的。 好了,我只能說這些了,如果有說錯的地方,還高人指出,加以指正與批評,謝謝。 |
專用寄存器的作用
16位CPU內(nèi)部有一個16位的標(biāo)志寄存器,它包含9個標(biāo)志位。這些標(biāo)志位主要用來反映處理器的狀態(tài)和運算結(jié)果的某些特征。各標(biāo)志位在標(biāo)志寄存器內(nèi)的分布如圖2.2所示。
1514131211109876543210
OFDFIFTFSFZF AF PF CF
31…17161514131211109876543210
……VMRF NTIOPLOFDFIFTFSFZF AFPFCF
圖2.2 16位/32位標(biāo)志寄存器的示意圖
上面9個標(biāo)志位可分為二組:運算結(jié)果標(biāo)志位和狀態(tài)控制標(biāo)志位。前者受算術(shù)運算和邏輯運算結(jié)果的影響,后者受一些控制指令執(zhí)行的影響。
更詳細(xì)的內(nèi)容標(biāo)志位的說明。
有些指令的執(zhí)行會改變標(biāo)志位,不同的指令會影響不同的標(biāo)志位,有些指令的執(zhí)行不改變?nèi)魏螛?biāo)志位,有些指令的執(zhí)行會受標(biāo)志位的影響,也有指令的執(zhí)行不受其影響。
程序員要想熟練運用這些標(biāo)志位,就必須掌握每個標(biāo)志位的含義、每條指令的執(zhí)行條件和執(zhí)行結(jié)果對標(biāo)志位的作用。
注意:雖然知道每個標(biāo)志位在標(biāo)志寄存器內(nèi)的具體位置是有好處的,但通常情況下,沒有這個必要。在使用第5.2.9節(jié)中的“條件轉(zhuǎn)移指令”時,系統(tǒng)會自動引用相應(yīng)標(biāo)志位的值來決定是否需要“轉(zhuǎn)移”的,所以,不必過分強(qiáng)調(diào)標(biāo)志位在標(biāo)志寄存器內(nèi)的具體位置。
非常好我支持^.^
(224) 95.7%
不好我反對
(10) 4.3%
相關(guān)閱讀:
- [電子說] 學(xué)習(xí)STM32F103的ADC功能 2023-10-24
- [電子說] 學(xué)習(xí)STM32F103的DAC功能 2023-10-24
- [電子說] 學(xué)習(xí)STM32F103的定時器功能 2023-10-24
- [電子說] STM32基礎(chǔ)知識:定時器的PWM輸出功能 2023-10-24
- [電子說] 既然ODR能控制管腳高低電平,為什么還需要BSRR寄存器呢? 2023-10-24
- [電子說] ARM系列-P Channel簡析 2023-10-24
- [控制/MCU] 基于STM32F429芯片的單片機(jī)芯片內(nèi)存映射圖 2023-10-23
- [電子說] 軟硬件交互的角度將中斷的知識梳理 2023-10-22
( 發(fā)表人:admin )