使用int 13h功能8读取每个气缸的磁头数

时间:2017-02-03 17:57:20

标签: assembly x86 bootloader

我试图了解如何使用int 13h函数8来获得“每个圆柱头”。

维基百科声明

  

DH =头的逻辑最后一个索引= number_of - 1(因为索引从0开始)

这是“每缸头数”还是总头数? (该值为+1以获得数量)

我目前假设它是“每缸气缸头”并使用这个公式:

C = LBA ÷ (HPC × SPT)
H = (LBA ÷ SPT) mod HPC
S = (LBA mod SPT) + 1

我使用int 13h函数2从磁盘读取扇区。使用从功能8获得的SPT(63)和HPC(16),我能够读取具有2015扇区或更少扇区的磁盘。一旦我要求柱面值为2,它将无法工作,除非我从具有最少3024个扇区的磁盘读取。但是,我能够通过轨道边界读取以获得2015年以上的扇区,使用少于3024个扇区的磁盘。只有当我手动指定气缸2时,才需要磁盘最小3024个扇区。

这就是为什么我认为它与错误的HPC值有关。 它是一个引导加载程序,它以实模式运行。

有什么想法吗?

0 个答案:

没有答案