## 14.4 進入和離開實地址模式
RESET引腳被觸發后將進入實地址模式。即使系統要進入保護模式下運行,程序的在剛開始時也要臨時運行在實地址模式下,這時可以為進入保護模式做一些初始化。
### 14.4.1 切換到保護模式
離開實地址模式的唯一方法就是切換到保護模式。當用MOV指令將CR0的PE(保護使能)置位后,處理器進入保護模式。(為了和80286兼容,也可以使用LMSW指令來設置PE位。)
關于切換到保護模式的其他描述參見第十章“初始化”。
### 14.5 切換回實地址模式
處理器可以通過使用MOV指令復位CR0的PE位來重新回到實地址模式。然而,如果想這么做,必須按照下面的方法:
1.如果開啟了頁管理,按照下面的步驟做:
+ 變換線性地址,使它對等映射;即,線性地址等于物理地址。
+ 清除CR0的PG位。
+ 將CR3清零來清空頁緩存。
2.段變換上限值為64K(FFFFH)。實地址模式下CS的上限值需要這樣設置。
3.載入段寄存器SS, DS, ES, FS和GS。選擇符指向的描述符包含下面的值,適用于實地址模式:
+ Limit = 64K (FFFFH)
+ Byte granular (G = 0)
+ Expand up (E = 0)
+ Writable (W = 1)
+ Present (P = 1)
+ Base = any value
4.關中斷。CLI關閉INTR中斷。NMIs可以通過外圍電路來關閉。
5.清PE位。
6.用長跳轉JMP跳轉到將要執行的實地址模式代碼。該動作會刷新指令隊列并給予CS寄存器合適的訪問權限。
7.使用LIDT來載入實地址模式下中斷表的基地址和上限值。
8.開中斷。
9. 載入實地址模式需要的寄存器。
- 第一章 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實地址模式的不同