x86
寄存器说明
ebp
和
esp
是
32
位的
SP
,
BP
esp
是堆栈指针
ebp
是基址指针
ESP
与
SP
的关系就象
AX
与
AL
,
AH
的关系
.
32
位
CPU
所含有的寄存器有:
4
个数据寄存器
(EAX
、
EBX
、
ECX
和
EDX)
2
个变址和指针寄存器
(ESI
和
EDI) 2
个指针寄存器
(ESP
和
EBP)
6
个段寄存器
(ES
、
CS
、
SS
、
DS
、
FS
和
GS)
1
个指令指针寄存器
(EIP) 1
个标志寄存器
(EFlags)
1
、数据寄存器
数据寄存器主要用来保存操作数和运算结果等信息,
从而节省读取操作数所需占用总线和访
问存储器的时间。
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
不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也
可作为指针寄存器,