概述
学到这个内容的时候,首先需要了解的是什么是寄存器。我的理解是,寄存器是由许多基本门电路组成(锁存器),在CPU中暂存二进制数的工具,并且这些二进制数可以是数据或者是地址。百度百科上面对寄存器的定义是:由具有存储功能的触发器组合起来构成的,存储二进制代码的工具。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。
X86寄存器有如下
①8个通用寄存器:EAX,EBX,ECX,EDX,ESI,EPI,ESP.EBP
②1个标志寄存器:EFLAGS
③6个段寄存器:CS,DS,ES,FS,GS,SS
④5个控制寄存器:CR0,CR1,CR2,CR3,CR4
⑤8个调试寄存器:DR0,DR1,DR2,DR4,DR5,DR6,DR7
⑥4个系统地址寄存器:GDTR,IDTR,LDTR,TR
详细介绍
其中,通用寄存器里,16位的寄存器没用具体的分配硬件,而是由32位寄存器的低16位组成。ag:EAX(32位)----AX(16位)。32位的寄存器不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器相比16位寄存器更具有通用性。
标志寄存器(EFLAGS):主要用于提供程序的状态及进行相应的控制。32位的EFLAGS寄存器包含一组状态标志、系统标志以及一个控制标志。ag:VM(bit 17) [Virtual-8086 mode flag]置1以允许虚拟8086模式,清除则返回保护模式。还有很多控制功能,不一一赘述了。段寄存器是根据内存分段的管理模式而设置的。
控制寄存器用来决定CPU的操作模式和当前执行的任务的属性。
调试寄存器主要作用是调试应用代码、系统代码、开发多任务操作系统.来监视代码的运行和处理器的性能。
系统地址寄存器,为了方便快速访问全局描述符表GDT、局部描述符表LDT和中断描述符表IDT等保护方式下非常重要的特殊段。