1、设置必要的实模式环境,如实模式下的堆栈等。
2、初始化全局描述符表(GDT)、局部描述符表(LDT)及中断描述符表(IDT)等。
3、保存实模式下的堆栈地址到某内存处,以便切换回实模式后恢复,如有必要也可保存DS、ES、FS、GS等数据段寄存器的值。
4、加载全局描述符表至全局描述符表寄存器(GDTR),如果未定义中断描述符表,则关中断,然后打开地址线A20。
5、修改cr0的PE位为1,切换到保护模式。
6、使用段间跳转指令转到保护模式下的段,如果有局部描述符表,则应首先加载局部描述表段至局部描述符表寄存器(LDTR)。
7、设置保护模式下的堆栈段SS及堆栈指令SP(ESP)。
8、设置DS、ES、FS、GS指向某个数据段,防止无意中使用到未设置的数据段。
9、准备切换回实模式,用于切换回实模式的段必须是16位段且其段描述符必须定义在GDT中,其段限制必须是0FFFFH。
10、修改cr0的PE位为0切换回实模式。
11、恢复堆栈段至切换到保护模式之前的状态,如有必要也可恢复DS、ES等数据段。
12、关闭地址线A20。如中断为关闭状态,则打开中断。

汇编:实模式->保护模式->实模式 的切换步骤相关推荐

  1. (操作系统开发)从实模式---->保护模式---->IA-32e模式( 64位模式)

    实模式和保护模式都是CPU的工作模式. 实模式与保护模式介绍 在实模式下,程序可以操作任何地址空间,而且无法限制程序的执行权限.尽管这种模式给设置硬件功能带来许多方便,但却给程序执行的安全性和稳定性带 ...

  2. “实模式--保护模式--实模式”转换过程

    下面以pmtest2.asm为例,来讲述"实模式--保护模式--实模式"的转换过程. 1."实模式--保护模式--实模式"的转换过程. 2.介绍段描述符属性 3 ...

  3. (实模式+保护模式)模式切换的过程步骤(代码+文字解析)

    [0]写在前面 文末的个人总结是干货,前面代码仅供参考的,且source code from orange's implemention of a os. ; ==================== ...

  4. X86汇编语言从实模式到保护模式17:协同式任务切换

    目录 1. 多任务和任务切换概述 1.1 多任务系统 1.2 任务切换含义 1.2.1 切换任务上下文 1.2.2 上下文是什么 1.3 任务切换方式概述 1.3.1 协同式任务切换 1.3.2 抢占 ...

  5. 实模式、保护模式和虚拟8086模式

    参考自:实模式与保护模式解惑之(一)--二者的起源与区别(河西无名式) 概述:实模式和保护模式是处理器发展的两个非常重要的阶段.这两个模式下的编程也有着显著的不同,弄明实模式与保护模式的区别是理解操作 ...

  6. 计算机实训基地运行与管理,计算机实训基地一体化管理模式探讨论文

    计算机实训基地一体化管理模式探讨论文 1高校计算机实训基地平时的工作内容 1.1实训基地的日常管理 高校设立了独立的计算机教学楼,并在计算机楼里开设了开放计算机实验室,在计算机教学楼里,配有专门的管理 ...

  7. 实体型转换为一个关系模式

    转载自:http://iask.sina.com.cn/b/18107163.html 1.一个实体型转换为一个关系模式.实体的属性就是关系的属性.实体的码就是关系的码.2.一个联系转化为一个关系模式 ...

  8. 【OS学习笔记】二十二 保护模式六:保户模式下操作系统内核如何加载用户程序并运行 对应的汇编代码之用户程序

    本汇编代码对应文章:保户模式下操作系统内核如何加载用户程序并运行中的实际用户程序代码. 对应的主引导扇区代码:主引导扇区代码 对应的内核代码:内核代码 ;代码清单13-3;文件名:c13.asm;文件 ...

  9. [实训笔记] 01 软件架构模式

    第 1 讲 软件模式架构 1.软件架构模式概念 1.1 架构是什么 定义 架构是构成一个系统的基础组织结构,包括系统的组件构成,组件间的相互关系.系统和其所在的关系.以及指导架构设计和演进的相关准则. ...

最新文章

  1. js、css分别实现元素水平垂直居中
  2. 新闻媒体的“社会热点事件”催发微博客的诞生
  3. 洛谷 P1136 迎接仪式 解题报告
  4. uglifyjs报错 webpack_webpack3里使用uglifyjs压缩js时打包报错的解决
  5. 什么是Brouter?
  6. fork() 和 vfork()
  7. MFC单选按钮的使用
  8. sql语句回忆录1-多表连接子查询
  9. Oracle问题小记五:服务启动-索引-子查询-分页存储过程
  10. 最好的git命令行基础使用教程 windows
  11. 函数-在函数里修改列表数据
  12. c语言矩阵键盘反转法扫描,行列扫描法,反转法,状态机法三种矩阵键盘扫描方法详解 带程序...
  13. VTK:图像阈值用法实战
  14. 2021-2027全球与中国高导热陶瓷绝缘基板市场现状及未来发展趋势
  15. python 小说cms系统_零基础小白十分钟用Python搭建小说网站!Python真的强!
  16. CCS6.1最后安装出现报错如下
  17. FlashVml2.0(WEB上的PhotoShop+Flash、VML最强开发工具)[推荐]
  18. python数据库实体_python---使用get方法访问‘数据库’实体
  19. PHP微信公众平台开发高级篇--群发接口
  20. linux下ping提示dup,ping出现dup问题

热门文章

  1. pytorch backward使用解析
  2. 解决客户端心跳正常,但是平台显示不在线的问题
  3. Canvas 雾玻璃
  4. 用python从日期中获取年、月、日、星期等30种信息
  5. 强连通分量(SCC, Strongly Connected Components)
  6. mysql数据库启动不了怎么挽救数据_如何修复mysql数据库,数据库损坏怎么办?
  7. 无阻塞情况connect生产EINPROGRESS错
  8. ASP.NET中的过滤器
  9. Bulletproofs: Short Proofs for Confidential Transactions and More论文解读
  10. 数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化...