这些最常见的寄存器你了解过吗?

一、常见寄存器的分类
1.通用寄存器(EAX EBX ECX EDX EBP ESP ESI EDI)
2.段寄存器(CS DS SS ES FS GS)
3.指令指针寄存器(EIP)
4.标志寄存器(EFLAGS)

二、通用寄存器
在这里插入图片描述
通用寄存器分为前加上字母E表示32位寄存器,普通的32位寄存器分为高16位和低16位,低16位通用寄存器有具体名称,分别叫做AX、BX、CX、DX、SI(源指针寄存器)、DI、(目的指针寄存器)、SP 、BP。
那么各种寄存器的作用分别是什么呢?这里简要介绍一下。
(一)数据寄存器(EAX EBX ECX EDX):
1.EAX——累加寄存器(Accumulator Register)
低16位(AX=AH&AL)
作用:实现乘除运算、中间结果缓存
2.EBX——基址寄存器(Base Register)
低16位(BX=BH&BL)
作用:存储器指针
3.ECX——计数寄存器(Count Register)
低16位(CX=CH&CL)
作用:实现循环控制、进行串操作
4.EDX——数据寄存器(Data Register)
低16位(DX=DH&DL)
作用:实现乘除运算、中间结果缓存(与EAX类似)
(二)变址寄存器和指针寄存器(ESI EDI EBP ESP)
1.ESI——源变址寄存器(Source Index Register)
低16位(SI)
作用:作为存储器指针、在串指令中作为源操作数指针
2.EDI——目的变址寄存器(Destination Index Register)
低16位(DI)
作用:作为存储器指针、在串指令中作为目的操作数指针
3.EBP——基址指针寄存器(Base Pointer Register)
低16位(BP)
作用:指向栈帧底部或栈底(栈帧底部和栈底是两个不同的概念)
4.ESP——堆栈指针寄存器(Stack Pointer Register)
低16位(SP)
作用:指向栈帧顶部或栈顶(栈帧顶部和栈顶是两个不同的概念)
(三)段寄存器(CS DS SS ES FS GS)
段寄存器作用——存储段地址
1.CS——代码段寄存器(Code Segment Register)
作用:存储代码段的段地址
2.DS——数据段寄存器(Data Segment Register)
作用:存储数据段的段地址
3.SS——堆栈段寄存器(Stack Segment Register)
作用:存储堆栈段的段地址
4.ES——附加段寄存器(Extra Segment Register)
作用:存储附加段的段地址
5.新增附加段寄存器:
FS——附加段寄存器(Extra Segment Register)
GS——附加段寄存器(Extra Segment Register)
(四)EIP——指令指针寄存器(Instruction Pointer Register)
1.内存中的地址表示
物理地址=段地址+偏移地址
段地址存储在段寄存器中、偏移地址是相对于段地址的偏移量。
EIP寄存器存放下一个机器指令的地址,指向下一条代码指令,并随程序的执行不断变化。
(五)EFLAGS——标志寄存器
1.CF——进位标志(Carry Flag)
2.PF——奇偶标志(Parity Flag)
3.AF——辅助进位标志(Auxiliary Carry Flag)
4.OF——溢出标志(Overflow Flag)
5.SF——符号标志(Sign Flag)
6.ZF——零标志(Zero Flag)

猜你喜欢

转载自blog.csdn.net/ConlinderFeng/article/details/106191861
今日推荐