免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2325 | 回复: 0
打印 上一主题 下一主题

orange 第四章小结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-23 02:11 |只看该作者 |倒序浏览
今天搞了一晚上,总算把这一章搞定了,小弟对操作系统只能是朦胧的认识阶段,若有见解不深刻的地方,还望大牛指出错误。

这一章我的理解是因为512字节的限制,所以由引导扇区直接加载内核是不现实的,所以交给了一个第三方---loader。


之后就是讲述了一下软盘中的内容,分为引导扇区,Fat1,Fat2(Fat1的备份),根目录区,数据区。


根目录区长度的计算以及如何计算数据区起始地址很容易得到的,很多数据都已经定义在引导扇区中了。


我们要把Loader加载入内存中,我们自然要读这个软盘咯,所以书中提到了要用int 13h,这个就像C语言中的函数一样,只要我们先参照表4.4把该需要初始化的寄存器赋初值,然后我们调用int 13h,机器就会自动把我们想要的数据全部加载到es:bx中去了。在我们成功把根目录区和数据区的数据加载入内存中后,我们就可以开始遍历根目录区了,这就是代码4.5想要表达的意思,在找到的那一刻,es:di就指向了N后面的字符,我们找到这个loader.bin自然是要把它加载进来的,略去中间类似于美化的东西,直接看代码4.10,我们知道当前es:di保存了N后面的字符位置,根据表4.2,我们当然要得到DIR_FstClus(开始簇号)的值,4.10的前三条指令的含义就在于此了,之后就可以根据开始簇号,根据图4.2所示,依次把loader.bin的所有的扇区都读到es:bx(即为baseofloader:offsetofloader)中了。最后直接跳入loader就OK了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP