• 标 题:我学软盘加解密时也用这本书,这是我的学有所用KV3000密钥盘源程序
  • 作 者:小牧童
  • 时 间:2000-12-9 16:52:49
  • 链 接:http://bbs.pediy.com

.MODEL LARGE
STACK SEGMENT PARA STACK 'STACK'
DW 128 DUP(?)
STACK ENDS
DATA SEGMENT PARA PUBLIC 'DATA'

PA70_0  DB      46h,0,50,08;70道0面
        DB      46h,0,245,08
        DB      46h,0,110,08 
        DB      46h,0,64,08
        DB      46h,0,87,08

PA70_1  DB      46h,1,13,08;70道1面
        DB      46h,1,37,08
        DB      46h,1,206,08
        DB      46h,1,169,08
        DB      46h,1,162,08

PA71_0  DB      47h,0,231,6
        DB      47h,0,44,6;71道0面
                 

PA71_1  DB      47h,1,198,6
        DB      47h,1,192,6;71道1面
       
                 

PA72_0  DB      48h,0,51,4;72道0面
        DB      48h,0,118,6
        DB      48h,0,147,6
        DB      48h,0,223,06h
        DB      48h,0,102,6
           

PA72_1  DB      48h,1,117,6
        DB      48h,1,111,6;72道1面
       

PA73_0  DB      49h,0,44,4
        DB      49h,0,172,6
        DB      49h,0,86,6
        DB      49h,0,103,6
        DB      49h,0,190,6
       

PA73_1  DB      49h,1,77,6
        DB      49h,1,179,6
       
PA74_0  DB      4ah,0,67,6
        DB      4ah,0,107,6
       

PA74_1  DB      4ah,1,39,6
        DB      4ah,1,61,6

PA75_0  DB      4bh,0,22,6
        DB      4bh,0,18,6
       
       
PA75_1  DB      4bh,1,115,6
        DB      4bh,1,86,6
       

PA76_0  DB      4ch,0,102,6
        DB      4ch,0,52,6
       
       
PA76_1  DB      4ch,1,99,6
        DB      4ch,1,244,6

PA77_0  DB      4dh,0,25,6
        DB      4dh,0,101,5
        DB      4dh,0,138,6
        DB      4dh,0,83,6
        DB      4dh,0,53,6

PA77_1  DB      4dh,1,3,6
        DB      4dh,1,117,6

PA78_0  DB      4eh,0,133,7
        DB      4eh,0,146,6
        DB      4eh,0,254,4
        DB      4eh,0,252,6
        DB      4eh,0,156,6

PA78_1  DB      4eh,1,56,06
        DB      4eh,1,199,6
       
PA79_0  DB      4Fh,0,126,6
        DB      4Fh,0,100,6
       
       
PA79_1  DB      4fh,1,31,04
        DB      4fh,1,145,06
        DB      4fh,1,166,08
        DB      4fh,1,104,06
        DB      4fh,1,201,6

PA80_0    DB      50h,0,19,08
          DB      50h,0,125,06
          DB      50h,0,133,06
          DB      50h,0,56,05
          DB      50h,0,247,06h
                       

PA80_1  DB      50h,1,101,6
        DB      50h,1,248,6

f710 db 'k71044.fin',0
f711 db 'k711192.fin',0
f721 db 'k721111.fin',0
f731 db 'k731179.fin',0
f740 db 'k740107.fin',0
f741 db 'k74161.fin',0
f750 db 'k75018.fin',0
f751 db 'k75186.fin',0
f760 db 'k76052.fin',0
f761 db 'k761244.fin',0
f771 db 'k771117.fin',0
f781 db 'k781199.fin',0
f790 db 'k790100.fin',0
f801 db 'k801248.fin',0


DISP1 DB 'Failure!',0ah,0dh,24h
DISP2 DB 'Success!',0ah,0dh,24h
DISP3 DB 'Making KV3000 Key Disk!',0AH,0DH,24H
DISP4 DB 'CRACKED by ZHUXIAOHUA 2000.11.18',0AH,0DH,24H
DISP5 DB 'TRY A BUG',0AH,0DH,24H
DISP6 DB 'Insert a disk in drive A: press any key to continue!',0ah,0dh,24h
DISP7 DB 'E-mail:zhuxiaohua@126.com', 0ah,0dh,24h
READ_ERR DB 'Can not open fin file or file not exist!',0AH,0DH,24H
DISP700 DB 'Track 70 side 0 made OK',0AH,0DH,24H
DISP701 DB 'Track 70 side 1 made OK',0ah,0dh,24h
DISP710 DB 'Track 71 side 0 made OK',0AH,0DH,24H
DISP711 DB 'Track 71 side 1 made OK',0ah,0dh,24h
DISP720 DB 'Track 72 side 0 made OK',0ah,0dh,24h
DISP721 DB 'Track 72 side 1 made OK',0AH,0DH,24H
DISP730 DB 'Track 73 side 0 made OK',0AH,0DH,24H
DISP731 DB 'Track 73 side 1 made OK',0ah,0dh,24h
DISP740 DB 'Track 74 side 0 made OK',0ah,0dh,24h
DISP741 DB 'Track 74 side 1 made OK',0ah,0dh,24h
DISP750 DB 'Track 75 side 0 made OK',0ah,0dh,24h
DISP751 DB 'Track 75 side 1 made OK',0AH,0DH,24H
DISP760 DB 'Track 76 side 0 made OK',0ah,0dh,24h
DISP761 DB 'Track 76 side 1 made OK',0AH,0DH,24H
DISP770 DB 'Track 77 side 0 made OK',0AH,0DH,24H
DISP771 DB 'Track 77 side 1 made OK',0ah,0dh,24h
DISP780 DB 'Track 78 side 0 made OK',0AH,0DH,24H
DISP781 DB 'Track 78 side 1 made OK',0ah,0dh,24h
DISP790 DB 'Track 79 side 0 made OK',0ah,0dh,24h
DISP791 DB 'Track 79 side 1 made OK',0ah,0dh,24h
DISP800 DB 'Track 80 side 0 made OK',0ah,0dh,24h
DISP801 DB 'Track 80 side 1 made OK',0ah,0dh,24h

DISP710W DB 'Track 71 side 0 Write OK',0AH,0DH,24H
DISP711W DB 'Track 71 side 1 Write OK',0ah,0dh,24h
DISP721W DB 'Track 72 side 1 Write OK',0AH,0DH,24H
DISP731W DB 'Track 73 side 1 Write OK',0ah,0dh,24h
DISP740W DB 'Track 74 side 0 Write OK',0ah,0dh,24h
DISP741W DB 'Track 74 side 1 Write OK',0ah,0dh,24h
DISP750W DB 'Track 75 side 0 Write OK',0ah,0dh,24h
DISP751W DB 'Track 75 side 1 Write OK',0AH,0DH,24H
DISP760W DB 'Track 76 side 0 Write OK',0ah,0dh,24h
DISP761W DB 'Track 76 side 1 Write OK',0AH,0DH,24H
DISP770W DB 'Track 77 side 0 Write OK',0AH,0DH,24H
DISP771W DB 'Track 77 side 1 Write OK',0ah,0dh,24h
DISP780W DB 'Track 78 side 0 Write OK',0AH,0DH,24H
DISP781W DB 'Track 78 side 1 Write OK',0ah,0dh,24h
DISP790W DB 'Track 79 side 0 Write OK',0ah,0dh,24h
DISP791W DB 'Track 79 side 1 Write OK',0ah,0dh,24h
DISP800W DB 'Track 80 side 0 Write OK',0ah,0dh,24h
DISP801W DB 'Track 80 side 1 Write OK',0ah,0dh,24h


ERR DB 00;格式化或写盘成功标志01成功00失败
DATA_CX DW 0000H;格式化磁盘磁道号临时存区CX
DATA_BX DW 0000H;
DATA_FILE DB 8192 DUP(0)
DATA ENDS


CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE,DS:DATA,SS:STACK
    MAIN PROC FAR
    PUSH DS
    XOR AX,AX
    PUSH AX
    MOV AX,DATA
    MOV DS,AX
    MOV ES,AX
    LEA DX,DISP3
    MOV AH,09H
    INT 21H
    LEA DX,DISP4
    INT 21H
    LEA DX,DISP6
    INT 21H

    MOV AH,0
    INT 16H
    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,4600H;开始格式化70道0面
    LEA BX,DATA_CX
    MOV ES:[BX],AX
    MOV DX,0;0面
    LEA AX,PA70_0
    LEA BX,DATA_BX
    MOV ES:[BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ  R700
    JMP FAIL
R700: LEA DX,DISP700
    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,4600H;开始格式化70道1面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0100h;1面
    LEA AX,PA70_1
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ  R701
    JMP FAIL
R701:LEA DX,DISP701
    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,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,4700H;开始格式化71道0面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0;0面
    LEA AX,PA71_0
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ  R710
    JMP FAIL
R710:LEA DX,DISP710
    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,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,4700H;开始格式化71道1面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0100h;1面
    LEA AX,PA71_1
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ R711
    JMP FAIL
R711:LEA DX,DISP711
    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,4800H;开始格式化72道0面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0;0面
    LEA AX,PA72_0
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ R720
    JMP  FAIL
R720:LEA DX,DISP720
    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,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,4800H;开始格式化72道1面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0100h;1面
    LEA AX,PA72_1
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ R721
    JMP  FAIL
R721:LEA DX,DISP721
    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,4900H;开始格式化73道0面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0;0面
    LEA AX,PA73_0
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ  R730
    JMP  FAIL
R730:LEA DX,DISP730
    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,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,4900H;开始格式化73道1面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0100h;1面
    LEA AX,PA73_1
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ R731
    JMP  FAIL
R731:LEA DX,DISP731
    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,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,4a00H;开始格式化74道0面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0;0面
    LEA AX,PA74_0
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ R740
    JMP  FAIL
R740:LEA DX,DISP740
    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,02;每道格式化扇区数
    MOV ES:[BX+4],AL
    MOV AL,54H;扇区间隙正常为54h
    MOV ES:[BX+7],AL
    MOV AL,04BH;充填字节,正常为F6H
    MOV ES:[BX+8],AL

    POP ES
    MOV AX,4a00H;开始格式化74道1面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0100h;1面
    LEA AX,PA74_1
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ  R741
    JMP  FAIL
R741:LEA DX,DISP741
    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,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,4b00H;开始格式化75道0面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0;0面
    LEA AX,PA75_0
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ R750
    JMP  FAIL
R750:LEA DX,DISP750
    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,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,4b00H;开始格式化75道1面
    LEA BX,DATA_CX
    MOV es:[BX],AX
    MOV DX,0100h;1面
    LEA AX,PA75_1
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,es:[BX]
    CMP AX,00
    JZ R751
    JMP  FAIL
R751:LEA DX,DISP751
    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,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,4c00H;开始格式化76道0面
    LEA BX,DATA_CX
    MOV es:[BX],AX
    MOV DX,0;0面
    LEA AX,PA76_0
    LEA BX,DATA_BX
    MOV es:[BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,es:[BX]
    CMP AX,00
    JZ  R760
    JMP FAIL
R760:LEA DX,DISP760
    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,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,4c00H;开始格式化76道1面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0100h;1面
    LEA AX,PA76_1
    LEA BX,DATA_BX
    MOV es:[BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ R761
    JMP  FAIL
R761:LEA DX,DISP761
    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,4d00H;开始格式化77道0面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0;0面
    LEA AX,PA77_0
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ  R770
    JMP FAIL
R770:LEA DX,DISP770
    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,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,4d00H;开始格式化77道1面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0100h;1面
    LEA AX,PA77_1
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ R771
    JMP  FAIL
R771:LEA DX,DISP771
    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,4e00H;开始格式化78道0面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0;0面
    LEA AX,PA78_0
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ  R780
    JMP FAIL
R780:LEA DX,DISP780
   
    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,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,4e00H;开始格式化78道1面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0100h;1面
    LEA AX,PA78_1
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ  R781
    JMP FAIL
R781:LEA DX,DISP781
    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,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,4f00H;开始格式化79道0面
    LEA BX,DATA_CX
    MOV [BX],AX
    MOV DX,0;0面
    LEA AX,PA79_0
    LEA BX,DATA_BX
    MOV [BX],AX
    CALL FORMATS
    LEA BX,ERR;判断是否出错
    MOV AX,[BX]
    CMP AX,00
    JZ  R790
    JMP FAIL
R790:LEA DX,DISP790
    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,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

  • 标 题:特殊指纹文件生成方法
  • 作 者:小牧童
  • 时 间:2000-12-9 17:08:11

特殊指纹文件生成方法:

用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