-
寄存器
鎖定
- 中文名
- 寄存器
- 外文名
- Register
- 定 義
- 有限存貯容量的高速存貯部件
- 分 類
- 指令寄存器(IR) 程序計數器(PC)
- 屬 性
- 信息科學
- 相 關
- 中央處理器
寄存器基本含義
寄存器是CPU內部用來存放數據的一些小型存儲區域,用來暫時存放參與運算的數據和運算結果。其實寄存器就是一種常用的時序邏輯電路,但這種時序邏輯電路只包含存儲電路。寄存器的存儲電路是由鎖存器或觸發器構成的,因為一個鎖存器或觸發器能存儲1位二進制數,所以由N個鎖存器或觸發器可以構成N位寄存器。寄存器是中央處理器內的組成部分。寄存器是有限存儲容量的高速存儲部件,它們可用來暫存指令、數據和位址。
[2]
對於編譯器非常友好易用,例如:包含靈活的寄存器配置,任意寄存器之間可實現單週期乘法,任意寄存器可以作為數據、結構或數組的指針。此外,Cortex-M4還包含4個特殊功能寄存器PRIMASK、FAUI。TMASK、BASEPRI和CONTROL。
[2]
寄存器基本概念
寄存器最起碼具備以下4種功能。
PORT1的控制寄存器(2張)
寄存器結構
74HC175則是用CMOS邊沿觸發器組成的4位寄存器,根據邊沿觸發的動作特點可知,觸發器輸出端的狀態僅僅取決於CLK上升沿到達時刻D端的狀態。可見,雖然74LS75和74HC175都是4位寄存器,但由於採用了不同結構類型的觸發器,所以動作特點是不同的。
[4]
為了增加使用的靈活性,在有些寄存器電路中還附加了一些控制電路,使寄存器又增添了異步置零、輸出三態控制和保持等功能。這裏所説的保持,是指CLK信號到達時觸發器不隨D端的輸入信號而改變狀態,保持原來的狀態不變。
[4]
寄存器工作原理
在計算機及其他計算系統中,寄存器是一種非常重要的、必不可少的數字電路構件,它通常由觸發器(D觸發器)組成,主要作用是用來暫時存放數碼或指令。一個觸發器可以存放一位二進制代碼,若要存放N位二進制數碼,則需用N個觸發器。
[6]
寄存器應具有接收數據、存放數據和輸出數據的功能,它由觸發器和門電路組成。只有得到“存入脈衝”(又稱“存入指令”、“寫入指令”)時,寄存器才能接收數據;在得到“讀出”指令時,寄存器才將數據輸出。
[6]
寄存器類型
1.通用寄存器組
通用寄存器組包括AX、BX、CX、DX4個16位寄存器,用以存放16位數據或地址。也可用作8位寄存器。用作8位寄存器時分別記為AH、AL、BH、BL、CH、CL、DH、DL。只能存放8位數據,不能存放地址。它們分別是AX、BX、CX、DX的高八位和低八位。若AX=1234H,則AH=12H,AL=34H。通用寄存器通用性強,對任何指令,它們具有相同的功能。為了縮短指令代碼的長度,在8086中,某些通用寄存器用作專門用途。例如,串指令中必須用CX寄存器作為計數寄存器,存放串的長度,這樣在串操作指令中不必給定CX的寄存器號,縮短了串操作指令代碼的長度。下面一一介紹:
AX(AH、AL):累加器。有些指令約定以AX(或AL)為源或目的寄存器。輸入/輸出指令必須通過AX或AL實現,例如:端口地址為43H的內容讀入CPU的指令為INAL,43H或INAX,43H。目的操作數只能是AL/AX,而不能是其他的寄存器。
[5]
2.指針和變址寄存器
這組寄存器存放的內容是某一段內地址偏移量,用來形成操作數地址,主要在堆棧操作和變址運算中使用。BP和SP寄存器稱為指針寄存器,與SS聯用,為訪問現行堆棧段提供方便。通常BP寄存器在間接尋址中使用,操作數在堆棧段中,由SS段寄存器與BP組合形成操作數地址即BP中存放現行堆棧段中一個數據區的“基址”的偏移量,所以稱BP寄存器為基址指針。
[5]
寄存器SI和DI稱為變址寄存器,通常與DS一起使用,為訪問現行數據段提供段內地址偏移量。在串指令中,其中源操作數的偏移量存放在SⅠ中,目的操作數的偏移量存放在DI中,SI和DI的作用不能互換,否則傳送地址相反。在串指令中,SI、DI均為隱含尋址,此時,SI和DS聯用,Dl和ES聯用。
[5]
3.段寄存器
8086/8088CPU可直接尋址1MB的存儲器空間,直接尋址需要20位地址碼,而所有內部寄存器都是16位的,只能直接尋址6KB,因此採用分段技術來解決。將1MB的存儲空間分成若干邏輯段,每段最長64KB,這些邏輯段在整個存儲空間中可浮動。
[5]
8086/8088CPU內部設置了4個16位段寄存器,它們分別是代碼段寄存器CS、數據段寄存器DS、堆棧段寄存器SS、附加段寄存器ES、由它們給出相應邏輯段的首地址,稱為“段基址”。段基址與段內偏移地址組合形成20位物理地址,段內偏移地址可以存放在寄存器中,也可以存放在存儲器中。
[5]
例如:代碼段寄存器CS存放當前代碼段基地址,IP指令指針寄存器存放了下一條要執行指令的段內偏移地址,其中CS=2000H,IP=001AH。通過組合,形成20位存儲單元的尋址地址為2001AH。
[5]
代碼段內存放可執行的指令代碼,數據段和附加段內存放操作的數據,通常操作數在現行數據段中,而在串指令中,目的操作數指明必須在現行附加段中。堆棧段開闢為程序執行中所要用的堆棧區,採用先進後出的方式訪問它。各個段寄存器指明瞭一個規定的現行段,各段寄存器不可互換使用。程序較小時,代碼段、數據段、堆棧段可放在一個段內,即包含在64KB之內,而當程序或數據量較大時,超過了64KB,那麼可以定義多個代碼段或數據段、堆棧段、附加段。現行段由段寄存器指明段地址,使用中可以修改段寄存器內容,指向其他段。有時為了明確起見,可在指令前加上段超越的前綴,以指定操作數所在段。
[5]
4.指令指針寄存器IP
8086/8088CPU中設置了一個16位指令指針寄存器IP,用來存放將要執行的下一條指令在現行代碼段中的偏移地址。程序運行中,它由BIU自動修改,使IP始終指向下一條將要執行的指令的地址,因此它是用來控制指令序列的執行流程的,是一個重要的寄存器。8086程序不能直接訪問IP,但可以通過某些指令修改IP的內容。例如,當遇到中斷指令或調用子程序指令時,8086自動調整IP的內容,將IP中下一條將要執行的指令地址偏移量入棧保護,待中斷程序執行完畢或子程序返回時,可將保護的內容從堆棧中彈出到IP,使主程序繼續運行。在跳轉指令時,則將新的跳轉目標地址送入IP,改變它的內容,實現了程序的轉移。
[5]
5.標誌寄存器FR
寄存器(2張)
寄存器存放代碼滿足條件
(1)代碼要存得進;
(2)代碼要記得住;
寄存器是由具有存儲功能的觸發器組合起來構成的。一個觸發器可以存儲1位2進制代碼,存放n位2進制代碼的寄存器,需用n個觸發器來構成。對寄存器中的觸發器只要求它具有置1、置0的功能即可,因而無論用何種類型的觸發器都可組成寄存器。
[7]
按照功能的不同,寄存器可分為基本寄存器和移位寄存器兩大類。基本寄存器只能並行送入數據,需要時也只能並行輸出。移位寄存器中的數據可以在移位脈衝作用下依次逐位右移或左移,數據既可以並行輸入、並行輸出,也可以串行輸入、串行輸出,還可以並行輸入、串行輸出或串行輸入、並行輸出,十分靈活,用途也很廣。
[7]
寄存器寄存器組織
ARM微處理器共有37個32位寄存器,其中31個為通用寄存器,6個為狀態寄存器。但是這些寄存器不能被同時訪問,具體哪些寄存器是可編程訪問的,取決於微處理器的工作狀態及具體的運行模式。但在任何時候,通用寄存器R14~R0、程序計數器PC、一個或兩個狀態寄存器都是可訪問的。
[8]
ARM9處理器共有37個32位長的寄存器,這些寄存器包括:
寄存器寄存器尋址
寄存器尋址是指操作數存放在CPU內部的寄存器中,指令中給出操作數所在的寄存器名。寄存器操作數可以是8位寄存器AH、AL、BH、BL、CH、CL、DH、DL,也可以是16位寄存器AX、BX、CX、DX、SP、BP、SI、DI等。因為寄存器尋址不需要通過總線操作訪問存儲器,所以指令執行速度比較快。
[11]
寄存器尋址( Register Addressing)是以通用寄存器的內容作為操作數的尋址方式,在該尋址方式下,操作數存放在寄存器中。寄存器尋址方式的尋址對象為:A,B,DPTR,R0~R7。其中,B僅在乘除法指令中為寄存器尋址,在其他指令中為直接尋址。A可以按寄存器尋址又可以直接尋址,直接尋址時寫成ACC。
[12]
- 參考資料
-
- 1. 陳慧琴,王治平主編;劉健,張麗豔副主編,電子技術及應用,西南交通大學出版社,2016.08,第227頁
- 2. 温子祺,冼安勝,林秩謙,楊偉展編著,ARM CORTEX-M4微控制器原理與實踐,北京航空航天大學出版社,2016.02,第24頁
- 3. 陶雪華,李仁華主編;俞明光,翟秀麗副主編,電子技術基礎教程,北京理工大學出版社,2016.01,第175頁
- 4. 朱淸慧,李定珍主編;尉喬南,張燕副主編,基於PROTEUS的數字電路分析與設計,西安電子科技大學出版社,2016.09,第213頁
- 5. 張晶,楊峯,徐承彬主編;李逢春,秦穎,郭丹偉,崔豔羣,劉春豔副主編,微機原理與接口技術 第2版,北京郵電大學出版社,2016.07,第18-21頁
- 6. 聶廣林,任德齊主編,電子技術基礎 第3版,重慶大學出版社,2016.01,第196頁
- 7. 熊才高,郭松梅主編;劉輝,陳玲,劉豔麗副主編;劉江海,潘岱,張紅梅參編,數字電子技術,華中科技大學出版社,2016.08,第193頁
- 8. 趙常松,吳顯義主編;李傳娣等副主編,ARM嵌入式系統原理與應用教程 第2版,北京航空航天大學出版社,2016.09,第19頁
- 9. 唐永鋒主編;白秋產,季仁東,居勇峯,楊定禮參編,嵌入式系統原理及應用:基於CORTEX-A8處理器,西安電子科技大學出版社,2016.09,第108頁
- 10. 文全剛,郝志剛主編;張榮高副主編,彙編語言程序設計:基於ARM體系結構 第3版,北京航空航天大學出版社,2016.04,第72頁
- 11. 耿茜,沈國榮,季秀霞,遲少華編著,微機原理與接口技術,國防工業出版社,2016.07,第70頁
- 12. 劉嵐,尹勇,撒繼銘,周嶸,方浩,潘愛民編著,單片計算機基礎及應用,武漢理工大學出版社,2016.03,第73頁
- 收起