【orange】关于将数据从软盘读到内存的一些总结

防止我以后忘记,我还是记一下吧~虽然都是在别人的基础上随便重复写一下。

然后呢,这里先跟着书上学软盘的,等我以后看完了全部去了解下光盘的做法。终于看完第四章了。。。。。。

 

 

一:软盘入门知识

1.首先要了解软盘的构造:(以1.44MB软盘为例)

引导扇区                    (扇区号:0

FAT1                           (扇区号:1-9

FAT2(通常与FAT1  (扇区号:10-18

根目录区                     (扇区号:19-未知)

数据区.                        (扇区号:未知-2879

软盘都是以扇区号为单位来区分的。

 

2.我们可以通过FAT12引导扇区来设置很多信息,EG:扇区总数,每扇区字节数,每簇扇区数,磁头数。。。。等等,注意这些都是可以由我们设置的。

在下面的讲述中,我们都假设每簇只有一个扇区,每个扇区512字节。。。详见P104

 

3.然后我们通常往软盘写入数据后,数据都在数据区,但是它不一定是连续存放的,那么我们怎么知道某一个文件在数据区的哪些簇(扇区)(这里假定一个簇只有一个扇区,所以可以互换)呢,那么我们要通过根目录和FAT来得到某个文件在数据区的簇号。这里寻找的过程大致如下:

当我们向软盘写入文件后,根目录里面有这个文件的一些信息,根目录的每一个条目占32字节:

文件名                         11字节)

文件属性                     1字节)

保留位                         10字节)

最后一次写入时间       2字节)

最后一次写入日期       2字节)

此条目对应的开始簇号(2字节)

文件大小                     4字节)

这里我们只关心2个东西:

第一个:是文件名,它的构造如下文件名8个字节,扩展名3字节,比如:zxx.bin,其中的zxx就是文件名,她没有8个字节怎么办呢,都补空格,bin就是扩展名

第二个:是此条目对应的开始簇号。其实我们得到名字的目的也就是要得到开始簇号。这个开始簇号有2层含义:一层是在FAT中的偏移簇号,一层是在数据区的偏移簇号,他们都是相同的(注意是偏移哦)。他们虽然在不同的扇区,但是却有着密切的联系,可能你会奇怪:不是说数据区里面存的才是内容吗?那我只需要数据区的偏移不就行了吗?要FAT里面的干嘛?确实,第一个内容你可以通过开始簇号找到,但是,不要忘记,我之前说过,一个文件在数据区不一定是连续存放的,那么还有第二个簇号,第三个簇号。。。。你从哪里来呢?

这就是FAT的作用了,你可以通过它找到文件的下个数据区,FAT对应此簇号的内容就是此文件的下一个簇号,直到某个簇号是大于等于0XFF8为止(每一个FAT条目是12位的)。

 

 

所以我们的整个过程是这样的:

第一步:首先往软盘写入一个文件,假设名字是zxx.bin

第二步:读取根目录,一个条目一个条目的找,直到找到文件名为zxx.bin的条目,用这个条目的首地址+26得到文件对应的开始簇号B

第三步:将数据区对应此簇号B的一个扇区内容读入内存

第四步:读取FATB簇号内容,根据这个内容找到下一个簇号,然后不断循环第三步第四步,直到B是大于等于0XFF8为止。

 

 

其实上面的只是一个大致思想,在我们实际编程的时候还有好多细节要考虑哦...

1.       我们上面的簇号是不能直接使用的,详见P109int 13h,了解他们的转换。

2.       注意数据区的偏移簇号为2的簇其实是数据区的第一个簇,所以变成的时候要注意减2,这里为什么没有01呢,主要是他和FAT对应,FAT的第一个条目和第二个条目是不使用的

 

等等....都记在了我乱七八糟的书上。。。加油看~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值