寄存器表
| 类型 | 名称 | 二进制码 | 寄存器说明 |
|---|---|---|---|
| 多功能寄存器 | AL | 0 | 累加寄存器低八位 |
| AH | 100 | 累加寄存器低八位 | |
| AX | 0 | 16 位累加寄存器 | |
| EAX | 0 | 32 位累加寄存器 | |
| BL | 11 | 基址寄存器低八位 | |
| BH | 111 | 基址寄存器低八位 | |
| BX | 11 | 16 位基址寄存器 | |
| EBX | 11 | 32 位基址寄存器 | |
| CL | 1 | 计数寄存器低八位 | |
| CH | 101 | 计数寄存器低八位 | |
| CX | 1 | 16 位计数寄存器 | |
| ECX | 1 | 32 位计数寄存器 | |
| DL | 10 | 数据寄存器低八位 | |
| DH | 110 | 数据寄存器低八位 | |
| DX | 10 | 16 位数据寄存器 | |
| EDX | 10 | 32 位数据寄存器 | |
| 指针寄存器 | SP | 100 | 16 位堆栈指针寄存器 |
| ESP | 100 | 32 位堆栈指针寄存器 | |
| BP | 101 | 16位基址指针寄存器 | |
| EBP | 101 | 32 位基址指针寄存器 | |
| 变址寄存器 | DI | 111 | 16 位目标变址寄存器 |
| EDI | 111 | 32位目标变址寄存器 | |
| SI | 110 | 16 位源变址寄存器 | |
| ESI | 110 | 32位源变址寄存器 | |
| 专用寄存器 | IP | * | 16 位指令指针寄存器 |
| EIP | * | 32 位指令指针寄存器 | |
| FLAGS | * | 16 位标志寄存器 | |
| EFLAGS | * | 32位标志寄存器 | |
| 段寄存器 | CS | 1 | 代码段寄存器 |
| DS | 11 | 数据段寄存器 | |
| ES | 0 | 附加段寄存器 | |
| SS | 10 | 堆栈段寄存器 | |
| FS | 100 | 标志段寄存器 | |
| GS | 101 | 全局段寄存器 | |
| 控制寄存器 | CR0 | 0 | 控制寄存器零 |
| CR1* | 1 | 控制寄存器一 | |
| CR2 | 10 | 控制寄存器二 | |
| CR3 | 11 | 控制寄存器三 | |
| CR4 | 100 | 控制寄存器四 | |
| CR5* | 101 | 控制寄存器五 | |
| CR6* | 110 | 控制寄存器六 | |
| CR7* | 111 | 控制寄存器七 | |
| 调试寄存器 | DR0 | 0 | 调试寄存器零 |
| DR1 | 1 | 调试寄存器一 | |
| DR2 | 10 | 调试寄存器二 | |
| DR3 | 11 | 调试寄存器三 | |
| DR4* | 100 | 调试寄存器四 | |
| DR5* | 101 | 调试寄存器五 | |
| DR6 | 110 | 调试寄存器六 | |
| DR7 | 111 | 调试寄存器七 | |
| 任务寄存器 | TR0 | 0 | 任务寄存器零 |
| TR1 | 1 | 任务寄存器一 | |
| TR2 | 10 | 任务寄存器二 | |
| TR3 | 11 | 任务寄存器三 | |
| TR4 | 100 | 任务寄存器四 | |
| TR5 | 101 | 任务寄存器五 | |
| TR6 | 110 | 任务寄存器六 | |
| TR7 | 111 | 任务寄存器七 | |
| 浮点寄存器 | ST0 | 0 | 浮点寄存器零 |
| ST1 | 1 | 浮点寄存器一 | |
| ST2 | 10 | 浮点寄存器二 | |
| ST3 | 11 | 浮点寄存器三 | |
| ST4 | 100 | 浮点寄存器四 | |
| ST5 | 101 | 浮点寄存器五 | |
| ST6 | 110 | 浮点寄存器六 | |
| ST7 | 111 | 浮点寄存器七 | |
| 多媒体寄存器 | MM0 | 0 | 媒体寄存器零 |
| MM1 | 1 | 媒体寄存器一 | |
| MM2 | 10 | 媒体寄存器二 | |
| MM3 | 11 | 媒体寄存器三 | |
| MM4 | 100 | 媒体寄存器四 | |
| MM5 | 101 | 媒体寄存器五 | |
| MM6 | 110 | 媒体寄存器六 | |
| MM7 | 111 | 媒体寄存器七 | |
| 单指令流、多数据流寄存器 | XMM0 | 0 | 单指令流、多数据流寄存器零 |
| XMM1 | 1 | 单指令流、多数据流寄存器一 | |
| XMM2 | 10 | 单指令流、多数据流寄存器二 | |
| XMM3 | 11 | 单指令流、多数据流寄存器三 | |
| XMM4 | 100 | 单指令流、多数据流寄存器四 | |
| XMM5 | 101 | 单指令流、多数据流寄存器五 | |
| XMM6 | 110 | 单指令流、多数据流寄存器六 | |
| XMM7 | 111 | 单指令流、多数据流寄存器七 | |
| 注: 英文名称有星号"*"的表示作为保留域, 实际并没有使用, 二进制码有星号"*"表示无需二进制数表示 | |||
根据 www.olanguage.org 的资料整理.
EBP基址指针寄存器,存放堆栈基址,由于ESP指针是会随时发生改变的,所以,出于程序分析上的考虑,使用EBP寄存器来对堆栈进行访问,但对于编译器来说,EBP担任了对堆栈基址访问的大任,所以,每个函数在开始时都要保存原来的EBP,设置自己的堆栈地址(mov ebp,esp),在函数结束返回时恢复原来的EBP,使上级函数可以正常使用EBP。
通用寄存器:8个,包括数据寄存器、地址指针寄存器、变址寄存器。
数据寄存器4个:AX BX CX DX,它们又可作为8个8位的寄存器使用,即AH BH CH DH AL BL CL DL
AX称为累加器,I/O指令均使用该寄存器,访问外部硬件和接口。
BX称为基址寄存器,在访问内存时用于存放基地址。
地址指针寄存器2个:SP BP
SP称为堆栈指针寄存器,BP称为基址指针寄存器,在作数组和字符串运算时,用于存放内存的偏移地址。
变址寄存器2个:SI DI
SI称为源变址寄存器,DI称为目的变址寄存器,用于数据块操作的内存寻址。
还是找本汇编书慢慢的看
汇编要是入门了,很有意思
| 通用寄存器 | |||||
|---|---|---|---|---|---|
| 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)寄存器: |
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 系列寄存器, 等用到再说吧.

浙公网安备 33010602011771号