💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 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. 载入实地址模式需要的寄存器。