80x86微处理器结构
结构图如下图所示图中阴影部分不属于8086,80286,80386。
1、通用寄存器
寄存器定义 | 32位寄存器 | 16位寄存器 | 功能 |
---|---|---|---|
累加器 | EAX | AX | 保存数据和作为某些指令的专用寄存器 |
基址寄存器 | EBX | BX | 保存数据,16/32位可保存地址 |
计数器 | ECX | CX | 保存数据和用于指令计数 |
数据寄存器 | EDX | DX | 保存数据,乘除法专用寄存器 |
基址指针 | EBP | BP | 保存地址,16位默认保存堆栈地址 |
堆栈指针 | ESP | SP | 保存堆栈栈顶指针 |
源变址寄存器 | ESI | SI | 保存数据,串操作时保存源数据地址 |
目标变址寄存器 | EDI | DI | 保存数据,串操作时保存目标数据地址 |
2、段寄存器
段名 | 功能 | 段寄存器 |
---|---|---|
代码段 | 用于存放程序地址 | CS |
数据段 | 用于存放程序数据 | DS |
堆栈段 | 用于存放程序中间结果 | SS |
附加段 | 用于存放数据 | ES |
附加段 | 用于存放数据 | FS |
附加段 | 用于存放数据 | GS |
32位微处理器中段寄存器分为两部分,一部分是编程可见的选择符寄存器,为6个16寄存器,在另一部分,还有6个64位段描述符告诉缓冲寄存器和其对应。
在实地址或者虚拟8086方式下,段描述符告诉缓冲寄存器不起作用,选择符寄存器退化成16位微处理器的段寄存器功能,段寄存器直接存放某个内存段的段基地址,段长在1B~64KB内。
在保护模式下,系统采用描述符表来描述不同段的起始地址和长度,段长在1B~4GB内,而段寄存器存放段选择符。该选择符可以从描述符表中选择一个描述段起始地址和长度的描述符。
3、专用寄存器
3.1 指令指针EIP/IP
指令指针其内容是下一条要取入的微处理器的指令在内存中的偏移地址。一个程序开始运行时,系统会把EIP清零,每取入一条指令,EIP自动增加取入该微处理器的指令的偏移地址。
3.2 EFLAGS/FLAGS
指示微处理器的控制状态和运算状态,分为3类:运算状态标志、控制状态标志和系统状态标志
4、系统地址寄存器
- 全局描述符表寄存器GDTR
48位寄存器,32位线性基地址和16位的界限值 - 中断描述符表寄存器IDTR
48位寄存器,32位线性基地址和16位的界限值 - 局部描述符表寄存器LDTR
16位寄存器,用来存放全局描述符表GDT中查询局部描述符表LDT描述符的16位选择符。 - 任务状态寄存器TR
16位寄存器,用来存放全局描述符表GDT中查询局部描述符表查找任务堆栈段TSS描述符的16位选择符。
5、控制寄存器
控制寄存器共4个,各32位。用来存放全局性与任务无关的机器状态。分别为CR0,CR1,CR2,CR3。
6、测试寄存器
测试寄存器有5个,各32位,表示为TR3~TR7。
7、调试寄存器
调试寄存器有8个,各32位,表示为DR0~DR7。