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