POP ES
MOV AX,4f00H;开始格式化79道1面
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;1面
LEA AX,PA79_1
LEA BX,DATA_BX
MOV [BX],AX
CALL FORMATS
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ R791
JMP FAIL
R791:LEA DX,DISP791;开始格式化80道0面
MOV AH,09H
INT 21H
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,04
MOV ES:[BX+3],AL;扇区大小
MOV AL,05;每道格式化扇区数
MOV ES:[BX+4],AL
MOV AL,54H;扇区间隙正常为54h
MOV ES:[BX+7],AL
MOV AL,06fH;充填字节,正常为F6H
MOV ES:[BX+8],AL
POP ES
MOV AX,5000H;开始格式化80道0面
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0;0面
LEA AX,PA80_0
LEA BX,DATA_BX
MOV [BX],AX
CALL FORMATS
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ R800
JMP FAIL
R800:LEA DX,DISP800
MOV AH,09H
INT 21H
PUSH ES;开始格式化80道1面
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,04
MOV ES:[BX+3],AL;扇区大小
MOV AL,02;每道格式化扇区数
MOV ES:[BX+4],AL
MOV AL,54H;扇区间隙正常为54h
MOV ES:[BX+7],AL
MOV AL,06fH;充填字节,正常为F6H
MOV ES:[BX+8],AL
POP ES
MOV AX,5000H;开始格式化80道1面
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;1面
LEA AX,PA80_1
LEA BX,DATA_BX
MOV [BX],AX
CALL FORMATS
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ R801
JMP FAIL
R801:LEA DX,DISP801
MOV AH,09H
INT 21H
LEA DX,F710;读71道0面44扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,472cH;写71道0面44扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0000h;0面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W710
JMP FAIL
W710:LEA DX,DISP710W
MOV AH,09H
INT 21H
;读71道1面192扇区指纹文件
LEA DX,F711
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,47c0H;写71道1面192扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W711
JMP FAIL
W711:LEA DX,DISP711W
MOV AH,09H
INT 21H
LEA DX,F721;读72道1面111扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,486fH;写72道1面111扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;0面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W721
JMP FAIL
W721:LEA DX,DISP721W
MOV AH,09H
INT 21H
LEA DX,F731;读73道1面179扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,49b3H;写73道1面179扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W731
JMP FAIL
W731:LEA DX,DISP731W
MOV AH,09H
INT 21H
LEA DX,F740;读74道0面107扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,4a6bH;写74道0面107扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0000h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W740
JMP FAIL
W740:LEA DX,DISP740W
MOV AH,09H
INT 21H
LEA DX,F741;读74道1面61扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,4a3dH;写74道1面61扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W741
JMP FAIL
W741:LEA DX,DISP741W
MOV AH,09H
INT 21H
LEA DX,F750;读75道0面18扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,4b12H;写74道0面107扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0000h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W750
JMP FAIL
W750:LEA DX,DISP750W
MOV AH,09H
INT 21H
LEA DX,F751;读75道1面86扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,4b56H;写75道1面86扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W751
JMP FAIL
W751:LEA DX,DISP751W
MOV AH,09H
INT 21H
LEA DX,F760;读76道0面34扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,4c34H;写74道0面107扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0000h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W760
JMP FAIL
W760:LEA DX,DISP760W
MOV AH,09H
INT 21H
LEA DX,F761;读76道1面244扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,4cf4H;写76道1面244扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W761
JMP FAIL
W761:LEA DX,DISP761W
MOV AH,09H
INT 21H
LEA DX,F771;读77道1面117扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,4d75H;写77道1面117扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W771
JMP FAIL
W771:LEA DX,DISP771W
MOV AH,09H
INT 21H
LEA DX,F781;读78道1面119扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,4ec7H;写78道1面119扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W781
JMP FAIL
W781:LEA DX,DISP781W
MOV AH,09H
INT 21H
LEA DX,F790;读79道0面100扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,4f64H;写70道0面100扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,000h;0面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W790
JMP FAIL
W790:LEA DX,DISP790W
MOV AH,09H
INT 21H
LEA DX,F801;读80道1面248扇区指纹文件
CALL READFILE
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H
MOV AL,06
MOV ES:[BX+3],AL;扇区大小
MOV ES:[BX+8],AL
POP ES
MOV AX,50f8H;写80道1面248扇区
LEA BX,DATA_CX
MOV [BX],AX
MOV DX,0100h;1面
LEA AX,DATA_FILE
LEA BX,DATA_BX
MOV [BX],AX
CALL WRITES
LEA BX,ERR;判断是否出错
MOV AX,[BX]
CMP AX,00
JZ W801
JMP FAIL
W801:LEA DX,DISP801W
MOV AH,09H
INT 21H
JMP EXIT
FAIL:LEA DX,DISP1
MOV AH,09H
INT 21H
LEA DX,DISP7
INT 21H
JMP EXIT1
EXIT:LEA DX,DISP2
MOV AH,09H
INT 21H
LEA DX,DISP7
INT 21H
JMP EXIT1
EXIT1:PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H;恢复磁盘参数
MOV AL,02H
MOV ES:[BX+3],AL
MOV AL,12H
MOV ES:[BX+4],AL;
MOV AL,54H
MOV ES:[BX+7],AL
MOV AL,0F6H
MOV ES:[BX+8],AL
POP ES
RET
MAIN ENDP
FORMATS PROC NEAR;格式化特殊磁道
MOV CX,05h
REP01:PUSH CX
LEA BX,DATA_CX;得到磁道号
MOV AX,es:[BX]
MOV CX,AX
LEA BX,DATA_BX;取得磁道格式
MOV AX,ES:[BX]
MOV BX,AX
MOV AX,0501h
INT 13H
JNB RIGHT01;成功转移
POP CX
DEC CX
JZ FAIL01
JMP REP01
FAIL01:LEA BX,ERR;写出错标志
MOV AX,01
MOV [BX],AX
JMP QUIT01
RIGHT01:POP CX
LEA BX,ERR;写入成功标志
MOV AX,00
MOV [BX],AX
QUIT01:RET
FORMATS ENDP
WRITES PROC NEAR;格式化特殊磁道
MOV CX,05h
REP02:PUSH CX
LEA BX,DATA_CX;得到磁道号
MOV AX,es:[BX]
MOV CX,AX
LEA BX,DATA_BX;取得磁道格式
MOV AX,ES:[BX]
MOV BX,AX
MOV AX,0301h
INT 13H
JNB RIGHT02;成功转移
POP CX
DEC CX
JZ FAIL02
JMP REP02
FAIL02:LEA BX,ERR;写出错标志
MOV AX,01
MOV [BX],AX
JMP QUIT02
RIGHT02:POP CX
LEA BX,ERR;写入成功标志
MOV AX,00
MOV [BX],AX
QUIT02:RET
WRITES ENDP
READFILE PROC NEAR
PUSH ES
MOV AH,35H
MOV AL,1EH
INT 21H;置正常磁盘参数
MOV AL,02H
MOV ES:[BX+3],AL
MOV AL,12H
MOV ES:[BX+4],AL;
MOV AL,54H
MOV ES:[BX+7],AL
MOV AL,0F6H
MOV ES:[BX+8],AL
POP ES
mov ax,3d00h ;为读而打开文件
int 21h
jnb read ;成功转
err1:lea dx,READ_ERR
mov ah,9
int 21h
mov ah,4ch
int 21h
read:
mov bx,ax ;bx=文件号
mov cx,8192 ;读入8192字节
lea dx,DATA_FILE ;ds:dx为读入地址
mov ah,3fh
int 21h ;读入文件至data_00,ax为读入字节数
cmp ax,8192
jnz err1
mov ah,3eh
int 21h ;关闭文件
ret
readfile endp
CODE ENDS
END MAIN
特殊指纹文件生成方法
详细信息:
特殊指纹文件生成方法:
用Debug
e0:0525 06
a9000
mov ax,0201
mov bx,100
mov cx,XXXX //XXXX为扇区号
mov dx,DDDD //DDDD 为道号0为0面0100为1面
int 13
int 3
g=9000
r bx:cx
0:2000
N XXXX.fin //指纹文件名
w
|