通用寄存器有哪些?
通用寄存器的分類
數據寄存器主要用來保存操作數和運算結果等信息,從而節省讀取操作數所需佔用總線和訪問存儲器的時間。 32位CPU有4個32位的通用寄存器EAX、EBX、ECX和EDX。對低16位數據的存取,不會影響高16位的數據。這些低16位寄存器分別命名為:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4個16位寄存器又可分割成8個獨立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每個寄存器都有自己的名稱,可獨立存取。程序員可利用數據寄存器的這種“可分可合”的特性,靈活地處理字/字節的信息。 寄存器AX和AL通常稱為累加器(Accumulator),用累加器進行的操作可能需要更少時間。累加器可用於乘、除、輸入/輸出等操作,它們的使用頻率很高; 寄存器BX稱為基地址寄存器(Base Register)。它可作為存儲器指針來使用; 寄存器CX稱為計數寄存器(Count Register)。在循環和字符串操作時,要用它來控制循環次數;在位操作中,當移多位時,要用CL來指明移位的位數; 寄存器DX稱為數據寄存器(Data Register)。在進行乘、除運算時,它可作為默認的操作數參與運算,也可用於存放I/O的端口地址。 在16位CPU中,AX、BX、CX和DX不能作為基址和變址寄存器來存放存儲單元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不僅可傳送數據、暫存數據保存算術邏輯運算結果,而且也可作為指針寄存器,所以,這些32位寄存器更具有通用性。詳細內容請見第3.8節——32位地址的尋址方式。 32位CPU有2個32位通用寄存器ESI和EDI。其低16位對應先前CPU中的SI和DI,對低16位數據的存取,不影響高16位的數據。 寄存器ESI、EDI、SI和DI稱為變址寄存器(Index Register),它們主要用於存放存儲單元在段內的偏移量,用它們可實現多種存儲器操作數的尋址方式(在第3章有詳細介紹),為以不同的地址形式訪問存儲單元提供方便。 變址寄存器不可分割成8位寄存器。作為通用寄存器,也可存儲算術邏輯運算的操作數和運算結果。 它們可作一般的存儲器指針使用。在字符串操作指令的執行過程中,對它們有特定的要求,而且還具有特殊的功能。 32位CPU把指令指針擴展到32位,並記作EIP,EIP的低16位與先前CPU中的IP作用相同。 指令指針EIP、IP(Instruction Pointer)是存放下次將要執行的指令在代碼段的偏移量。在具有預取指令功能的系統中,下次要執行的指令通常已被預取到指令隊列中,除非發生轉移情況。所以,在理解它們的功能時,不考慮存在指令隊列的情況。 在實方式下,由於每個段的最大範圍為64K,所以,EIP中的高16位肯定都為0,此時,相當於只用其低16位的IP來反映程序中指令的執行次序。
8086CPU的通用寄存器有哪些?
8086CPU的通用寄存器有8個, 又可以分成2組,一組是數據寄存器(4個),
另一組是指針寄存器及變址寄存器(4個).
數據寄存器分為:
AH&AL=AX(accumulator):累加寄存器,
常用於運算;在乘除等指令中指定用來存放操作數,另外,
所有的I/O指令都使用這一寄存器與外界設備傳送數據.
BH&BL=BX(base):基址寄存器,常用於地址索引;
CH&CL=CX(count):計數寄存器,常用於計數;
常用於保存計算值,如在移位指令,循環(loop)
和串處理指令中用作隱含的計數器.
DH&DL=DX(data):數據寄存器,常用於數據傳遞。
他們的特點是,這4個16位的寄存器可以分為高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。
這2組8位寄存器可以分別尋址,並單獨使用。
另一組是指針寄存器和變址寄存器,包括:
SP(Stack Pointer):堆棧指針,與SS配合使用,
可指向目前的堆棧位置;
BP(Base Pointer):基址指針寄存器,
可用作SS的一個相對基址位置;
SI(Source Index):
源變址寄存器可用來存放相對於DS段之源變址指針;
DI(Destination Index):目的變址寄存器,可用來存放相對於 ES 段之目的變址指針。
這4個16位寄存器只能按16位進行存取操作,
主要用來形成操作數的地址,
用於堆棧操作和變址運算中計算操作數的有效地址。
通用寄存器與寄存器區別
CPU裡有很多寄存器,不同的寄存器有不同的用處。比如idtr寄存器是存放中斷例程的入口地址的寄存器,他就幹這個,你不能用他幹別的。通用寄存器的意思是這個寄存器沒有特殊用途,你用它做什麼都可以,比如存一個ascII碼,存一個數,幹什麼都行,只要你自己明白你給他賦值的意義就好。寬泛的來說一般程序員可以修改的寄存器多數都屬於通用寄存器。
通用寄存器起什麼作用?
寄存器是中央處理器內的組成部分。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和位址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數器(PC)。在中央處理器的算術及邏輯部件中,包含的寄存器有累加器(ACC)。
簡述各通用寄存器的主要功能?
8086CPU的所有寄存器都是16位,可以存放兩個字節。AX,BX,CX,DX這四個寄存器通常用來存放一般性的數據,被稱為通用寄存器!段地址在8086CPU中存放的位置就叫做段寄存器,8086CPU有四個段寄存器:CS,DS,ES,SS。
8086CPU的通用寄存器有哪些
8個通用寄存器:AX/BX/CX/DX/SI/DI/BP/SP;4個段寄存器:CS/SS/DS/ES1個標誌寄存器:FLAGS1個指令指針寄存器:IP以上寄存器均為16位,know?
8086CPU有哪些寄存器,各有什麼用途?
8086 有14個16位寄存器,這14個寄存器按其用途可分為(1)通用寄存器、(2)指令指針、(3)標誌寄存器和(4)段寄存器等4類。
(1)通用寄存器有8個, 又可以分成2組,一組是數據寄存器(4個),另一組是指針寄存器及變址寄存器(4個).
數據寄存器分為:
AH&AL=AX(accumulator):累加寄存器,常用於運算;在乘除等指令中指定用來存放操作數,另外,所有的I/O指令都使用這一寄存器與外界設備傳送數據.
BH&BL=BX(base):基址寄存器,常用於地址索引;
CH&CL=CX(count):計數寄存器,常用於計數;常用於保存計算值,如在移位指令,循環(loop)和串處理指令中用作隱含的計數器.
DH&DL=DX(data):數據寄存器,常用於數據傳遞。
他們的特點是,這4個16位的寄存器可以分為高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。這2組8位寄存器可以分別尋址,並單獨使用。
另一組是指針寄存器和變址寄存器,包括:
SP(Stack Pointer):堆棧指針,與SS配合使用,可指向目前的堆棧位置;
BP(Base Pointer):基址指針寄存器,可用作SS的一個相對基址位置;
SI(Source Index):源變址寄存器可用來存放相對於DS段之源變址指針;
DI(Destination Index):目的變址寄存器,可用來存放相對於 ES 段之目的變址指針。
這4個16位寄存器只能按16位進行存取操作,主要用來形成操作數的地址,用於堆棧操作和變址運算中計算操作數的有效地址。
(2) 指令指針IP(Instruction Pointer)
指令指針IP是一個16位專用寄存器,它指向當前需要取出的指令字節,當BIU從內存中取出一個指令字節後,IP就自動加1,指向下一個指令字節。注意,IP指向的是指令地址的段內地址偏移量,又稱偏移地址(Offset Address)或有效地址(EA,Effective Address)。
(3)標誌寄存器FR(Flag Register)
8086有一個18位的標誌寄存器FR,在FR中有意義的有9位,其中6位是狀態位,3位是控制位。
OF: 溢出標誌位OF用於反映有符號數加減運算所得結果是否溢出。如果運算結果超過當前運算位數所能表示的範圍,則稱為溢出,OF的值被置為1,否則,OF的值被清為0。
DF:方向標誌DF位用來決定在串操作指令執行時有關指針寄存器發生調整的方向。
IF:中斷允許標誌IF位用來決定CPU是否響應CPU外部的可屏蔽中斷髮出的中斷請求。但不管該標誌為何值,CPU都必須響應CPU外部的不可屏蔽中斷所發出的中斷請求,以及CPU內部產生的中斷請求。具體規定如下:
(1)、當IF=1時,CPU可以響應CPU外部的可屏蔽中斷髮出的中斷請求;
(2)、當IF=0時,CPU不響應CPU外部的可屏蔽中斷髮出的中斷請求。
TF:跟蹤標誌TF。該標誌可用於程序調試。TF標誌沒有專門的指令來設置或清楚。
(1)如果TF=1,則CPU處於單步執行指令的工作方式,此時每執行完一條指令,就顯示CPU內各個寄存器的當前值及CPU將要執行的下一條指令。
(2)如果TF=0,則處於連續工作模式。
SF:符號標誌SF用來反映運算結果的符號位,它與運算結果的最高位相同。在微機系統中,有符號數採用補碼錶示法,所以,SF也就反映運算結果的正負號。運算結果為正數時,SF的值為0,否則其值為1。
ZF: 零標誌ZF用來反映運算結果是否為0。如果運算結果為......
內存與通用寄存器的區別
這個問題我初學彙編的時候也困擾過,不過現在明白了。寄存器集成在cpu中,是cpu能夠直接訪問的存儲設備吧。其容量其小,但是訪問速度是最快的。當cpu執行指令的時候,它根據代碼寄存器和IP往內存中找到相關的機器碼來執行指令,代碼寄存器CS存放的是代碼段的基址,ip存放的是偏移,它指向當前執行的代碼的偏移地址。當執行一條指令後,它會加一。
寄存器由於容量小,不可能存放什麼變量什麼的,它一般就存放一些地址作為索引,cpu執行指令的時候根據它的地址去內存找相關內容來完成當前的執行。包括變量的內容什麼的。至於通用寄存器ax之類,通常就用來暫存中間的結果,比如從內存取出的變量,先用一寄存器保存,然後執行指令,這樣寄存器的內容會發生變化(指令是直接作用於寄存器對象的),然後把它的內容可以傳給內存保存下來。ax,bx,cx,dx在一般情況下可以通用,只是要注意它們的特殊用法,比如在loop指令的時候默認的就是操作cx,還有bx是唯一能夠當指針寄存器來用的通用寄存器,ax一般用於dos功能調用等等。其他場合你可以隨便用哪個啊。
要真正的理解就要認真看書哦。呵呵
單片機有幾個通用寄存器?
7個