读/写硬盘数据的过程
读数据
1.系统调用hd_out函数向硬盘控制器发送写命令
向硬盘控制器发送命令块。
// 调用参数:drive - 硬盘号(0-1); nsect - 读写扇区数;
// sect - 起始扇区; head - 磁头号;
// cyl - 柱面号; cmd - 命令码(读/写);
// *intr_addr() - 硬盘中断处理程序中将调用的C 处理函数。
static void hd_out (unsigned int drive, unsigned int nsect, unsigned int sect,
unsigned int head, unsigned int cyl, unsigned int cmd,
void (*intr_addr) (void))
{
register int port asm ("dx"); // port 变量对应寄存器dx。
if (drive > 1 || head > 15) // 如果驱动器号(0,1)>1 或磁头号