## 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 任務、多任務環境的詳細介紹。
### 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章。

### 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實地址模式的不同
