发信人: goodfrd(supervisor)
整理人: yangcs(2001-12-06 18:08:40), 站内信件
|
不小心删除了分区表,如何快速算出来?
原来有C、D,但记不得C盘在哪里结束,D盘从哪开始。
用DISKEDIT 找太慢。
能确定扩展分区在 X 道 0面第1扇开始。
用DEBUG写个小程序把 X 找出来。(我运行了一下很快就找到了,比 DISKEDIT 快多了)
假设 X > 800 道(800=320H, CX=20C1) ,程序如下:
-U0100
19E2:0100 B80102 MOV AX,0201
19E2:0103 BA8000 MOV DX,0080
19E2:0106 B9C120 MOV CX,20C1
19E2:0109 BB007C MOV BX,7C00
19E2:010C 50 PUSH AX
19E2:010D 53 PUSH BX
19E2:010E 51 PUSH CX
19E2:010F 52 PUSH DX
19E2:0110 CD13 INT 13
19E2:0112 7220 JB 0134
19E2:0114 81BFFE0155AA CMP WORD PTR [BX+01FE],AA55
19E2:011A 7416 JZ 0132
19E2:011C 80FDFF CMP CH,FF
19E2:011F 740F JZ 0130
19E2:0121 5A POP DX
19E2:0122 59 POP CX
19E2:0123 5B POP BX
19E2:0124 58 POP AX
19E2:0125 FEC5 INC CH
19E2:0127 EBE3 JMP 010C
19E2:0129 90 NOP
19E2:012A 90 NOP
19E2:012B 90 NOP
19E2:012C 90 NOP
19E2:012D 90 NOP
19E2:012E 90 NOP
19E2:012F 90 NOP
19E2:0130 CC INT 3
19E2:0131 CC INT 3
19E2:0132 CC INT 3
19E2:0133 CC INT 3
19E2:0134 CC INT 3
-G=100
程序运行若停在 134 说明读硬盘出错
若停在 132 说明已找到,再用D 7C00、U7C00或 DISKEDIT 确认一下
若停在 130 说明找不到
找到扩展分区起点后,就可以手工填写分区表了。
---- 欢迎光临良友程序库:http://0d0a.126.com http://f12.my163.com,免费提供我的各种Source Code
兄弟我抛出几块砖,有玉的赶紧亮出来啊! |
|