硬盘参数的快速检测 青岛 郭书军 1996-11-29 硬盘参数的检测方法,很多计算机报刊上都有介绍,但不一定可靠。新版ROM BIOS中的自动检测硬盘(AUTO DETECT HARD DISK)功能无疑给使用者带来了很大方便,可惜对于没有该功能的微机,使用者无法自动检测硬盘参数,本文通过对ROM BIOS中自动硬盘功能的分析,总结出硬盘参数的快速检测方法,并给出检测程序,以方便用户使用。 检测硬盘参数时,首先问硬盘命令/状态端口1F7H发出读硬盘参数命令ECH,延时一段时间后,从硬盘数据端口1F0H读出100H的数据,其中包含有硬盘的三个重要参数:柱面数Cyln)、磁头数(Head)和扇区数(Sect),它们的位置分别是02H、06H和0CH,将这三个参数转换成十进制,并以ASCII码显示出来。根据这三个参数,从ROM BIOS的硬盘设置中找出相应的类型号。如果找不到相应的类型号,则可设置为用户类型(User Type),设置为用户类型时,一般将Wpoom设为65535,LZone的值和柱面数相同,硬盘容量设置程序会根据柱面数,磁头数和扇区数自动算出。 检测并显示硬盘参数的汇编语言程序如下: C:>debug diskinfo.com File not found -A 100 100 JMP 116 ;转主程序 102 MOV CL,OA ;二__十进制转换子程序 104 DIV CL 106 OR AX,3030 109 PUSH AX 10A MOV AH,OE 10C INT 10 ;ASCII显示 10E POP AX 10F MOV AL,AH 111 MOV AH,OE 113 INT 10 115 RET 116 MOV DX,1F7 ;主程序 11B OUT DX,AL ;发出命令 11C MOV AL,10 11E LOOP 11E ;延时 120 DEC AL 122 JNZ 11E 124 MOV DX,1F0 127 MOV DI,180 12A MOV CX,100 12D CLI 12E CLD 12F REPZ 130 DB 6D ;INSW读出数据 131 STI 132 MOV SI,180 135 MOV AX,[SI+2];柱面数 138 MOV CL,64 13A DIV CL 13C PUSH AX 13D MOV AH,0 13F CALL 102 ;转换显示 142 POP AX 143 MOV AL,AH 145 MOV AL,0 147 CALL 102 14A INT 10 14E MOV AX,[SI+6] ;磁头数 151 CALL 102 154 MOV AL,20 156 INT 10 158 MOV AX,[SI+C] ;扇区数 15B CALL 102 15E INT 20 RCX 0000 :160 -W -Q 在DEBUG 环境下将上述程序输入计算机,存盘后即可使用。本程序在多种微机上对多种硬盘操作正常。