## 4.1 系统寄存器 (System Registers)
为系统程序员设计的寄存器可以分为以下几类:
EFLAGS (标志寄存器)
Memory-Management Registers (内存管理寄存器)
Control Registers (控制寄存器)
Debug Registers (调试寄存器)
Test Registers (测试寄存器)
### 4.1.1 系统标志 (System Flags)
系统标志寄存器EFLAGS 控制着 I/O、可屏蔽中断(maskable interupts)、调试(debuging)、任务切换(task switching)、保护模式下虚拟8086方式的执行、多作务环境(multitasking environment)。这些标志在图 4-1 中被高亮显示。
IF ( 中断许可标志 Interrupt-Enable Flag,比特位 9)
设置 IF 使CPU可识别外部(可屏蔽)中断请求。复位 IF 则禁止中断。 IF 对不可屏蔽外部中断和异常的识别没有任何作用。关于中断的详细信息,请参看第9章的描述。
NT (嵌套任务 Nested Task, 比特位 14)
处理器用嵌套位来控制被中断或被调用的任务链。NT 对 IRET 指令的操作有影响。更多的信息请参看第7章和第9章。
RF (继续位 Resume Flag, 比特位 16)
RF 位暂时禁止调试异常,以便一条指令可以在一个调试异常结束后立即重看书而且不会引发另一个调试异常。参看第12章以获得更多的细节。
TF (陷阱位 Trap Flag,比特位 8)
设置 TF 可以让处理器工作在单步调试模式。在此模式下,CPU 每执行完一条指令后将自动引发一个异常,这样可以在程序每执行完一条指令后对程序进行查询。单步仅仅是80386 众多调试特性的一个。参看第12章以获得更多的细节。
VM (虚拟8086 模式 Virtual 8086 Mode,比特位 17)
当此位设置时,VM 标志说明一个任务正在执行一个8086 程序。参看第14章以得到更多80386 在保护模式下执行8086 任务、多任务环境的详细介绍。![](../Images/image002.gif)
### 4.1.2 内存管理寄存器 (Memory –Management Registers)
80386 有4个寄存器来寻址特定的数据结构,它们用来实现段式内存管理。
GDTR 全局描述符表寄存器 (Global Descriptor Table Register)
LDTR 局部描述符表寄存器 (Local Descriptor Table Register)
这些寄存器指向段描述符表 GDT 和 LDT。第5章对通过描述符表来寻址的机制做了详细的介绍。
IDTR 中断描述符表寄存器 (Interrupt Descriptor Table Register)
这个寄存器指向一张包含中断处理子程序入口点的表(IDT)。第9章对中断机制进行的详细介绍。
TR 任务寄存器 (Task Register)
这个寄存器指向当前任务信息存放处,这些信息是处理器所需要的。第7章对80386的多任务特性做了介绍。
### 4.1.3 控制寄存器 (Control Registers)
图4-2显示了80386的控制寄存器,CR0、CR2、和CR3。这些寄存器可以通过MOV 指令的一些变种形式被系统程序员所访问,这样便可以把它们存入通用寄存器或从通用寄存器中加载,例如:
```
MOV EAX , CR0
MOV CR3 , EBX
```
CR0 包含系统控制标志,这些标志控制着整个系统的运行,而不仅仅是针对某一个特定的任务。
EM (摸拟位 Emulation,比特位 2)
EM 指示协处理器功能是否通过摸拟来实现。更多的信息请参看第11章。
ET (扩展类型 Extension Type, 比特位 4)
ET 指明了系统内协处理器的类型(80287 或80387)。详细情况请查看第11章和第10章。
MP (数学部件存在 Math Present,比特位 1)
MP 控制 WAIT 指令的执行,WAIT 用于系统与协处理器的同步。第11章对其进行详细介绍。
PE (保护模式允许 Protection Enable,比特位 0)
设置PE 将让处理器工作在保护模式下。复位PE将返回到实模式工作。关于模式切换请参看第14章和第10章。
PG (分页允许 Paging, 比特位 31)
PG 指明处理器是否通过页表来转换线性地址到物理地址。关于分页地址转换请查看第5章。关于如何设置PG位,请查看第10章。
TS (任务已切换Task Switched,比特位 3)
处理器第次做任务切换时将设置 TS 位, 当执行协处理器指令时将会测试 TS 位。详细信息请查看第11章。
CR2 被用来当PG位置位时,处理缺页异常。当发生缺页异常时,处理器自动将引起缺页异常的线性地址存放到CR2。关于缺页中断请查看第9章。
CR3 只有当PG 位设置时才有用。通过CR3,CPU 可以定位当前任务的页目录表。关于页表和页地址转换机制请查看第5章。
![](../Images/image004.gif)
### 4.1.4 调试寄存器 (Debug Register)
调试寄存器使80386有很好的调试功能,包括断点、不改变代码段情况下设置指令断点。关于它们的格式和用途请参看第12章。
### 4.1.5 测试寄存器 (Test Registers)
测试寄存器并不是80386体系结构的标准部件。它们仅仅是用来测试TLB 地址转换信息,这些存贮的是来自页表中的。查看第12章,关于怎样使用这些寄存器。
- 第一章 80386介绍
- 1.1 该手册的组织结构
- 1.2 其他文献
- 第二章 编程基本模型
- 2.1 存储器组织和段
- 2.2 数据类型
- 2.3 寄存器
- 2.4 指令格式
- 2.5 操作数选择
- 2.6 中断和异常
- 第4章 系统寄存器
- 4.1 系统寄存器 (System Registers)
- 4.2 系统指令 (System Instructions)
- 第五章 内存管理
- 5.1 分段地址转换(Segment Translation)
- 5.2 分页地址转换(Page Translation)
- 5.3 混合分段和分页地址转换(Combining Segment and Page Translation)
- 第六章 内存管理
- 6.1 为什么要保护(Why Protection?)
- 6.2 80386保护机制概述(Overview of 80386 Protection Mechnaisms)
- 6.3 段级保护(Segment-Level Protection)
- 6.4 页级保护(Page-Level Protection)
- 6.5 混合分页和分段保护(Combining Page and Segment Protection)
- 第7章 多任务(Multitasking)
- 8.1 I/O 寻址(I/O Addressing)
- 7.1 任务状态段(Task State Segment)
- 7.3 任务寄存器(Task Register)
- 7.4 任务门描述符(Task Gate Descriptor)
- 7.5 任务切换(Task Switching)
- 7.6 任务链(Task Linking)
- 7.7 任务寻址空间(Task Address Space)
- 第8章 输入 输出
- 8.2 I/O 指令(I/O Instructions)
- 8.3 保护和I/O(Protection and I/O)
- 第9章 异常和中断(Exceptions and Interrupts)
- 9.1 识别中断(Identifying Interrupts)
- 9.2 允许和禁止中断(Enabling and Disabling Interrupts)
- 9.3 同时发生的中断和异常的优先级(Priority Among Simultaneous Interrupts and Exceptions)
- 9.4 中断描述符表(Interrupt Descriptor Table)
- 9.5 IDT 描述符(IDT Descriptors)
- 9.6 中断任务和中断子程序(Interrupt Tasks and Interrupt Procedures)
- 9.7 出错码(Error Code)
- 9.8 异常条件(Exception Conditions)
- 9.9 异常总结(Exception Summary)
- 9.10 出错码总结(Error Code Summary)
- 第10章 初始化(Initialization)
- 10.1 复位后处理器状态(Processor State After Reset)
- 10.2 实模式初始化(Software Initialization for Real-Address Mode)
- 10.3 切换到保护模式(Switching to Protected Mode)
- 10.4 保护模式初始化(Software Initialization for Protected Mode)
- 10.5 初始化示例
- 10.6 TLB测试
- 第十四章 80386实地址模式
- 14.1 物理地址构成
- 14.2 寄存器和指令
- 14.3 中断和异常处理
- 14.4 进入和离开实地址模式
- 14.6 实地址模式异常
- 14.7 与8086的不同
- 14.8 与80286实地址模式的不同