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