硬盘参数的快速检测
检测硬盘参数时,首先问硬盘命令/状态端口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 环境下将上述程序输入计算机,存盘后即可使用。本程序在多种微机上对多种硬盘操作正常。