常见的寄存器

一、常见寄存器的分类

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)

  • 6
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值