通用寄存器
EAX
累加(Accumulator)寄存器
AX(AH、AL)
常用於乘、除法和函數返回值
EBX
基址(Base)寄存器
BX(BH、BL)
常做內存數據的指針
ECX
計數器(Counter)寄存器
CX(CH、CL)
常做字符串和循環操作中的計數器
EDX
數據(Data)寄存器
DX(DH、DL)
常用於乘、除法和 I/O 指針
ESI
來源索引(Source Index)寄存器
SI
常做內存數據指針和源字符串指針
EDI
目的索引(Destination Index)寄存器
DI
常做內存數據指針和目的字符串指針
ESP
堆棧指針(Stack Point)寄存器
SP
只做堆棧的棧頂指針; 不能用於算術運算與數據傳送
EBP
基址指針(Base Point)寄存器
BP
只做堆棧指針, 可以訪問堆棧內任意地址, 經常用於中轉 ESP 中的數據; 不能用於算術運算與數據傳送
指令指針寄存器
EIP
指令指針(Instruction Pointer)寄存器
總是指向下一條指令的地址; 所有已執行的指令都被它指向過.
標志寄存器
EFLAGS
標志(Flag)寄存器:
EFLAGS 中的 32 位被分成 0-31 個二進制位分別使用;
第 0、2、4、6、7、11 位是狀態標志位;
第 10 位是字符串操作控制標志位;
其他標志位一般不用或無權使用
0
CF
進位(Carry)標志
目標無法容納無符號算術運算的結果, 需要進位或借位時被設置; 可用 STC 指令設置, CLC 指令取消.
1
2
PF
奇偶(Parity)標志
低 8 位中有偶數個 1 時被設置
3
4
AF
輔助(Auxiliary)標志
使用 BCD 碼運算導致 3 位到 4 位產生進位時被設置
5
6
ZF
零(Zero)標志
運算結果為 0 時被設置
7
SF
符號(Sign)標志
運算結果為負數時被設置
8
9
10
DF
方向(Direction)標志
字符串操作是從高位到低位時被設置; 可用 STD 指令設置, CLD 指令取消.
11
OF
溢出(Overflow)標志
因有符號運算的結果太寬而導致數據丟失時被設置
...
31
...
其中的 EAX、ECX、EDX 三個寄存器相對自由些, 所以練習時用它們較多.
沒理會段寄存器: CS、DS、SS、ES、FS、GS, 是因在 Win32 保護模式下編程它們不再重要了.
還有 FPU、MMX 系列寄存器, 等用到再說吧.