硬盘DOS分区表参数的推算方法

Author: 湛江 陈文庆 Date: 1992-10-16

        一、硬盘基本参数的确定:
        我们知道,硬盘的逻辑0扇区存放有硬盘的I/O参数表,从I/O参数表可以确定有关硬盘的基本参数,其所在相对位置为0BH-1DH,共19个字节,各字节的含义如下:
        0B-0CH:每扇区字节数。
        0DH:每簇扇区数。
        0E-0FH:保留扇区数。
        10H:FAT表数。
        11-12H:根目录最大可存文件数。
        13-14H:本分区总扇区数。
        15H:硬盘标志。
        16-17H:每个FAT表占用扇区数。
        18-19H:每磁道扇区数。
        1A-1BH:磁头数。
        1C-1DH:本分区前区有扇区数。
        下面就是联想386/33机DOS3.3版的I/O参数表。其中硬盘总容量为100MB。只有一个DOS分区,总容量为32MB。其I/O参数表的具体内容是:
        00 02 04 01 00 02 00
        02 9F FF F8 40 00 21 00
        08 00 21 00
        二、硬盘分区表参数的推算法:
        1.分区表各字节的含义:
        在硬盘的第1扇区(0柱0头1扇区)有64字节是记录硬盘分区信息的,每个分区占16个字节,共有4个分区,在相对位置为1BE-1FDH,各字节的含义如下:
        00H:活动分区标志。80H__活动分区;00H__非活动分区。
        01_03H:表示本分区起始头号、区号及柱面号。
        04H:DOS系统标志。
        05-07H:本分区终止头号、区号、柱面号。
        08-0BH:本分区前的扇区数。
        0CH-0FH:本分区扇区总数。
        2.柱面号和扇区号的关系:
        从硬盘主引导程序可知,柱面号和扇区号有如下关系:起始实际柱面号的低8位就是分区表中的柱面号,高2位和实际扇区号合并就是分区表中的扇区号;终止实际柱面号低8位减1就是分区表中的柱面号,高2位和实际扇区事情合并就是分区表中的扇区号。
        3.分区表参数的推算:
        下面以联想386/33机为例来说明推算分区表参数的方法:
        (1)第一字节是80H(活动分区)或00H(非活动分区)。
        (2)由于本分区前已有33个扇区,每磁道33个扇区,即在本分区前已有一磁道,所以本分区从0柱1头1区开始,故第二、三、四字节分别为01、01、00H。
        (3)第五字节是04H。
        (4)本分区总扇区数是FF9FH,本分区终止扇区号为FF9FH+21H=FFC0H,则终止柱面号为(FFC0H/21H)/8=F8H,由于余数为0,则可推知终止头号为07H(即最后一个磁头),即第六字节为07H,由实际柱面号F8H的低8位为F8H,则分区表第八字节为F7H,由于终止扇区号必为最后一扇区,即为33扇区,该扇区号和实际柱面号的高2位(二进制)合并得21H,故第七字节为21H。综上所述可得知第六、七、八字节分别07H、21H、F7H。
        (5)由于本分区前已有21H个扇区,故第九、十、十一、十二字节分别为21H、00H、00H、00H。
        (6)由于本分区的总扇区数为FF9FH,故第十三、十四、十五、十六字节分别为9FH、FFH、00H、00H。