您的位置:首页 > 其它

《Orange's 一个操作系统的实现》读书手记3(2)--- [ 保护模式(Protect Mode)]

2011-01-03 14:47 357 查看
保护模式(Protect Mode)(2)

3.1.1 保护模式的运行环境

前面我们编写的程序都是运行在软盘的0面0磁道第1扇区,只有512个字节,这点弹丸之地实在满足不了日益增长的程序代码的需要。
有两个办法可以解决这个矛盾:
一是在这个512字节里专门安排一个引导代码,让它可以读取我们写的程序,然后运行它; 二是用现成的DOS系统,把我们的程序编译成COM文件,让DOS来执行它。
我们不禁要问,不是我们自己写操作系统么?怎么把DOS操作系统搅和进来了?
作者推荐用第二种简单的但不怎么酷的方法:
1. 去Bochs的官方网站h t t p://bochs.sourceforge.net/diskimages.html
下载一个freedos-img.tar.gz
,复制我们的工作目录,解压后将其中的a.img
改名为freedos.img

ok,我已经下好了,你呢?
2. 用bximag生成一个软盘映像,起名为pm.img

3. 修改当前工作目录下的bochsrc(还记得不?第二章我们自己写的,把它拷到当前工作目录来),确保其中有以下三行:
floppya:1_44=freedos.img, status=inserted

floppyb:1_44=pm.img, status=inserted

boot:a

4.启动bochs ,待FreeDos启动完毕后格式化B盘,



5. 将上节的代码pmtest1.asm 中的org 07c00h
改为 org 100h
,并重新编译:
nasm pmtest1.asm -o pmtest1.com

6. 将pmtest1.com复制到pm.img上:
sudo mkdir /mnt/floppy

sudo mount -o loop pm.img /mnt/floppy

sudo cp pmtest1.com /mnt/floppy

sudo umount /mnt/floppy

7.重新运行bochs ,A:/>B: 切换到B盘,执行 pmtest1.com,OK! 我们看到什么了?



好的,有了DOS兄的帮忙,我们就可以大展身手了。开始我们的下一步,揭密GDT......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐