操作系统实验三:实模式与保护模式间自由跳转

      此次实验,是在  操作系统实验二:从实模式跳转到保护模式  基础上的进一步实验。实验实现的内容很简单,一开始进入实模式,然后跳转到保护模式,然后再跳转回实模式,然后再跳转到保护模式,如此不断循环。

 

从实模式调转到保护模式步骤:

1.准备好GDT

2.使用lgdt指令加载gdtr

3.打开地址线A20

4.设置cr0的PE位为1

5.使用cli指令关闭中断

6.根据GDT选择子跳转到32位代码段,此时进入保护模式


 

 

从保护模式转到实模式调步骤:

1.跳转到16位代码段

2.加载适合的GDT选择子到有关段寄存器

3.设置cr0的PE位为0

4.跳转到16位代码段,此时进入实模式

5.关闭地址线A20

6.使用sti指令打开中断

 

实验流程简要说明:

(pm16.c部分)

1.清屏

2.跳到第9步

3.加载适合的描述符选择子到有关段寄存器

4.设置cr0的PE位为0

5.一个跳转,真正回到实模式

6.关闭 A20 地址线

7.开中断

8.调用延时函数

9.显示字符串This is real model!

10.设置下一次显示字符串的位置

11.加载 GDTR

12.关中断

13.打开地址线A20

14.置cr0的PE位为1

15.跳转到32位代码段,进入保护模式

(pm32.c部分)

16.调用延时函数

17.显示字符串I am now in protect model^_^

18.保存最后的光标位置

19.跳转到(pm16.c)第3步

 

实验代码如下:

code:run.c(请参考 操作系统实验二:从实模式跳转到保护模式  中的run.c代码)

 

code:pm.h

 

 

code:pm16.c

 

 

code:pm32.c

 

 

想要实验以上代码的朋友请注意:

1.到杨晓兵大大的博客上下载安装yc09,安装只需一分钟左右。

2.将操作系统实验二:从实模式跳转到保护模式  中的run.c代码,以及此次试验中的pm.h、pm16.c、pm32.c代码拷贝到某个实验用的文件夹内。

3.在YC09/example文件夹内找到bochs.exe、BIOS-bochs-latest、VGABIOS-elpin-2.40、x11-pc-us.map四个文件拷贝到试验用的文件夹内。

4.使用yc09编译运行run.c 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值