寄存器的分类

寄存器的分类:

通用寄存器:数据寄存器、指针寄存器、变址寄存器

(1)数据寄存器
数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。

32位CPU有432位的通用寄存器
EAX(累加器)、EBX(基址寄存器)、ECX(计数寄存器)、EDX(数据寄存器)。

16位:
AX(累加器)、BX(基址寄存器)、CX(计数寄存器)、DX(数据寄存器)。

8位寄存器组:
AX:AH、AL
BX:BH、BL、
CX:CH、CL
DX:DH、DL 8位寄存器,
只能存放8位数据,不能存放地址。
AX中0-7八位为低位,表示为AL寄存器;8-15八位为高位,表示为AH寄存器;
(AH对应AX的高8位、AL对应AX的低8位,AX对应EAX的低16位)
		16位常见寄存器介绍:
    
        数据寄存器包括: 8088/8086含4个16位数据寄存器,它们又可分为8个8位寄存器,即:
        AX:累加器。所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中;
        BX:基址寄存器。在间接寻址中用于存放基地址;
        CX:计数寄存器。用于在循环或串操作指令中存放计数值;
        DX:数据寄存器。在间接寻址的I/O指令中存放I/O端口地址;在32位乘除法运算时,存放高16位数。

(2)指针寄存器

32位:EBP、ESP。

 EBP为基指针寄存器,用它可直接存取堆栈中的数据。

 ESP为堆栈指针寄存器,用它只可访问栈顶。

16位:BP(基址指针寄存器)、SP(堆栈指针寄存器)。
    16位指针寄存器:
        SP:堆栈指针寄存器,其内容为栈顶的偏移地址;
        BP:基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。
        BX与BP在应用上的区别
        作为通用寄存器,二者均可用于存放数据;
        作为基址寄存器,用BX表示所寻找的数据在数据段;用BP则表示数据在堆栈段。

(3)变址寄存器

32位:ESI(源变址寄存器)、EDI(目的变址寄存器)。主要用于存放存储单元在段内的偏移量。
16位:SI(源变址寄存器)、DI(目的变址寄存器)。
变址寄存器在指令中常用于存放数据在内存中的地址。

(4)段寄存器

32位:ECS(代码段寄存器)、 EDS(数据段寄存器)、 ESS(堆栈段寄存器)
 EES(附加段寄存器)、EFS(附加段寄存器)、EGS(附加段寄存器)。

16位:CS(代码段寄存器)、DS(数据段寄存器)、
	  SS(堆栈段寄存器)、ES(附加段寄存器)。
	  
    CS(代码段)			指明代码段的起始地址
    SS(堆栈段)			指明堆栈段的起始地址
    DS(数据段)			指明数据段的起始地址
    ES(附加段)			指明附加段的起始地址
存放相应段的段基址的高16位。每个段寄存器用来确定一个逻辑段的起始地址

(5)指令指针寄存器

32位:EIP。
16位:IP。
指令指针EIP、IP是存放下次将要执行的指令在代码段的偏移量。

(6)标志寄存器flag

标志寄存器也称程序状态字寄存器。 
16位:状态标志共6位,CF、PF、AF、ZF、SF和OF。
最好做习题理解这个标志位。
  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值