wangyongzhao 发表于 2011-10-23 02:11

orange 第四章小结

今天搞了一晚上,总算把这一章搞定了,小弟对操作系统只能是朦胧的认识阶段,若有见解不深刻的地方,还望大牛指出错误。

这一章我的理解是因为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了。
页: [1]
查看完整版本: orange 第四章小结