现在要用INT 13,service 02来读硬盘,已有LBA为第82569sector。
按网上的计算方法:
LBA = cylinder * numHeads * sectorspertrack head * sectorpertrack sector - 1;
现在硬盘参数为:16heads, 63sectors per track, 406 cylinders
我算出的CHS为: cylinder:81 head:14 sector:40
但读到的数据老是不对(与WINHEX打开看到的数据不一样),请问如何从LBA转换为CHS,谢谢。
这个没有超过CHS能表达的限制,就是CHS。 16heads, 63sectors per track, 406 cylinders 。这是总的硬盘大小(比较小,就200M)。
请问LBA为82569的CHS是多少?我想再问一个问题,通过下面这个公式算出来的CHS是L-CHS还是P-CHS,在INT 13H,service 02H中用到的L-CHS还是P-CHS,谢谢。
公式:
cylinder = LBA / (heads_per_cylinder * sectors_per_track)
temp = LBA % (heads_per_cylinder * sectors_per_track)
head = temp / sectors_per_track
sector = temp % sectors_per_track 1
INT 13H支持的就是L-CHS,最大8064MB(256x1024x63),再超过就没法用CHS模式访问了。
LBA模式其实很简单,就是按照HCS的顺序排的。 LBA 82569转换过来就是:H3 C92 S39。LBA 82569转换过来就是:H3 C92 S39。
我想问一下你这个结果是按照什么方法算出来的,谢谢。
按照你的硬盘参数,每side有 406*63 sectors, 82569 / (406*63),整数部分就是H, 小数部分 * 406,整数部分就是C,再剩下的小数部分 * 63,就是S。