我试图了解如何使用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值有关。 它是一个引导加载程序,它以实模式运行。
有什么想法吗?