4個資料暫存器 :EAX、EBX、ECX、EDX
2個變址和指標暫存器ESI和EDI
2個指標暫存器ESP和EBP
6個段暫存器ES、CS、SS、DS、FS和GS
1個指令指標暫存器EIP
1個標志暫存器EFlags
1、資料暫存器 (EAX EBX ECX EDX)
資料暫存器主要用來保存運算元和運算結果等資訊,從而節省讀取運算元所需占用總線和訪問存盤器的時間。
32位CPU有4個32位的通用暫存器EAX、EBX、ECX和EDX。對低16位資料的存取,不會影響高16位的資料。這些
低16位暫存器分別命名為:AX、BX、CX、DX
4個16位暫存器又可分割成8個獨立的8位暫存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每個寄
存器都有自己的名稱,可獨立存取。
AX
暫存器AX和AL通常稱為累加器(Accumulator),用累加器進行的操作可能需要更少時間。累加器可用于乘、
除、輸入/輸出等操作,它們的使用頻率很高;
BX
暫存器BX稱為基地址暫存器(Base Register)。它可作為存盤器指標來使用;
CX
暫存器CX稱為計數暫存器(Count Register)。在回圈和字串操作時,要用它來控制回圈次數;在位操作
中,當移多位時,要用CL來指明移位的位數;
DX
暫存器DX稱為資料暫存器(Data Register)。在進行乘、除運算時,它可作為默認的運算元參與運算,也
可用于存放I/O的埠地址。
在16位CPU中,AX、BX、CX和DX不能作為基址和變址暫存器來存放存盤單元的地址,但在32cpu中可以。
2、變址暫存器 ( ESI EDI )
32位CPU有2個32位通用暫存器ESI和EDI。其低16位對應先前CPU中的SI和DI,對低16位資料的存取,不影響
高16位的資料。
暫存器ESI、EDI稱為變址暫存器(Index Register),它們主要用于存放存盤單元在段內的偏移量,用它們可實作多種存盤器運算元的尋址方式,為以不同的地址形式訪問存盤單元提供方便。
變址暫存器不可分割成8位暫存器。作為通用暫存器,也可存盤算術邏輯運算的運算元和運算結果。
。
3、指標暫存器(EBP、ESP)
32位CPU有2個32位通用暫存器EBP和ESP。其低16位對先前CPU中的BP和SP,對低16位資料的存取,不影響高16位的資料。
暫存器EBP、ESP稱為指標暫存器(PointerRegister),主要用于存放堆疊記憶體儲單元的偏移便。
指標暫存器不可分割成
8位暫存器。作為通用暫存器,也可存盤算術邏輯運算的運算元和運算結果。
它們主要用于訪問堆疊內的存盤單元,并且規定:
BP為基指標(Base Pointer)暫存器,用它可直接存取堆疊
中的資料;
SP為堆疊指標(Stack Pointer)暫存器,用它只可訪問堆疊頂。
4、段暫存器(CS、DS、ES、SS、FS、GS)
段暫存器是根據記憶體分段的管理模式而設定的。記憶體單元的物理地址由段暫存器的值和一個偏移量組合而成的,這樣可用兩個較少位數的值組合成一個可訪問較大物理空間的記憶體地址。
CPU內部的段暫存器:
CS——代碼段暫存器(Code Segment Register)
”Jum 段地址: 偏移地址“
Jmp ax, 執行指令前:ax = 1000H, cs = 2000H, ip =0003H
執行指令后: ax = 1000H, cs = 2000H, ip = 1000H
DS——資料段暫存器(Data Segment Register)
mov ax, 1000H
mov ds, ax
ES——附加段暫存器(Extra Segment Register)
SS——堆疊段暫存器(Stack Segment Register)
mov ax, 1000H
mov ss, ax
mov sp, 0010H
FS——附加段暫存器(Extra Segment Register)
GS——附加段暫存器(Extra Segment Register)
5、指令指標暫存器(IP)
32位CPU把指令指標擴展到32位,并記作EIP,EIP的低16位與先前CPU中的IP作用相同。
指令指標EIP、IP(Instruction Pointer)是存放下次將要執行的指令在代碼段的偏移量。在具有預取指令功能的系統中,下次要執行的指令通常已被預取到指令佇列中,除非發生轉移情況。所以,在理解它們的功能時,不考慮存在指令佇列的情況。在實方式下,由于每個段的最大范圍為64K,所以,EIP中的高16位肯定都為0,此時,相當于只用其低16位的IP來反映程式中指令的執行次序。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/136131.html
標籤:匯編語言
上一篇:v
