已更正。
原BUG如下:
cylinder=regs.h.ch+1; /* 寄存器的 CH +1 为柱面数 应该是CL的高2位为高2位,CH的8位为低8位 */
sector=regs.h.cl; /* 寄存器的 CL 为每道扇区数 应该是 CL 的低6位 */
改为:
cylinder=((((unsigned int)regs.h.cl)>>6<<8) | regs.h.ch) + 1;
sector=regs.h.cl & 0x3F;
在取值时,没有用指针甚至一般运算,用高效而好玩的位运算。。
现在读写老硬盘就可以了。。
如果有老硬盘的,可以试玩试玩,我自己还没有呢。。
[此贴子已经被作者于2006-7-20 20:46:03编辑过]
有缘相识!我中文系的 3月拿下C/C++/VC 5天写游戏 2月写游戏系统 有空去http://mykool.go2.