基于fat32的引导扇区

本文档描述了作者在创建自己的操作系统时,如何编写基于fat32的引导扇区代码。通过Winimage创建ima镜像,利用fat32引导扇区的bpb和ebpb设置,读取磁盘5个扇区到内存指定区域。代码中包含检测int13h扩展功能,以及在没有扩展功能时的处理。最后,通过nasm编译生成bin文件,并使用010Editor写入ima镜像,通过bochs进行模拟运行。
摘要由CSDN通过智能技术生成

基于fat32的引导扇区
今年二月份的时候开始就打算自己动手写一个操作系统,也看了很多书,但是最近才真正有机会开始实践,以下是引导扇区代码,没啥好说的,做起来也很简单
首先是要用Winimage去建一个ima镜像(我不知道那个img为啥不行,每次读img然后软件就崩了),自定义大小,不要软盘不要软盘不要软盘,网上很多很多很多的资料都是用软盘,可恨呐!本来就是想要写一个真的能够用的东西放在U盘里面所以,用fat32吧,其实一开始我甚至都打算弄ntfs的,引导区代码都写了,但是后面的sys文件什么的搞不定甚至我对其结构的资料都找不到。。。没办法了,fat32就fat32吧,反正一般U盘都fat32。
好吧不废话了,代码部分的内容是首先fat32的bpb和ebpb,然后设置好段寄存器,然后检测是否有int13h的扩展功能,有的话,用扩展功能读磁盘5个扇区(DAP什么的自己查吧),没有就int13h正常的那点功能吧(但我不保证这部分代码对,因为我的测试是有扩展的),当然为了知道已经读完了,一些显示信息是必要的对吧。
然后说说我内存和磁盘的管理,在fat32里保留扇区里面有两个备份,一个备份通常有6个扇区——fat头里面LocaOfBackupSec(location of back up sector)的那个Word决定的,当然,貌似通常都是这样的(至于fat头文件里面的其他东西我接下来几篇博客会讲讲看hhh,或者也可以参考别的文档,一般能看到我这篇博客的都是想做这些事情的,这点总会知道的),第一个扇区(0扇区)是引导扇区,所以剩下我们有5个可以用来做些别的事情(所以要读5个),然后参考开机内存布局分布,大概500h-7c00h能用,然后7c00h开始的一个扇区是最开始装载的东西,然后之后到9Fc00h都是可用内存,但是考虑到500h之后几个字节貌似bios有用来做一些啥,我干脆从600h开始装5个扇区到1000h,之后放真正的kernel(应该一开始initialize吧,不管了再说吧)
所以这段代码就主要是读5个扇区到600h-1000h
然后跳到那个地方执行
代码就酱,实测能用,然后是用nasm生成bin文件,用010editor把二进制文件写进ima镜像就好
然后是bochs(当然这个镜像你们也可以用bochs带的那个img镜像工具生成,至于文件写不写的进去我就不管了反正我弄不开)bochs其实功能比较多,但是如果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值