⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zhk1.asm

📁 汇编程序编写的密码门的程序,输入正确的密码可以打开门,密码错误出现提示
💻 ASM
📖 第 1 页 / 共 4 页
字号:
DATA  SEGMENT
       MESS1  DB '         PLEASE INPUT PASSWORD!'
               DB 0AH,0DH, '      SET PASSWORD PLEASE PRESS A!'
               DB 0AH,0DH, '     CANCEL PASSWORD PLEASE INPUT C!'
               DB 0AH,0DH,'$'
       MESS2  DB       0AH,0DH,'       PLEASE INPUT ADM_PASSWORD'
               DB 0AH,0DH,'$'
       MESS3  DB       0AH,0DH,'     PASSWORD WERE ALTERED!','$'
       MESS4  DB      0AH,0DH,'     INPUT 6 NUMKEYS AS A NEW PASSWORD!'
               DB 0AH,0DH,'$'
       MESS5  DB        0AH,0DH,'     INPUT NEW PASSWORD AGAIN!'
               DB 0AH,0DH,'$'
       MESS6  DB        0AH,0DH,'     WARNING! PASSWORD IS DIFFERENT!'
               DB      0AH,0DH, '     INPUT 6 NUMKEYS AGAIN!'
               DB 0AH,0DH,'$'
       MESS7  DB        0AH,0DH,'     PASSWORD HAS BEEN CANCELED!','$'
     MESSNO  DB        0AH,0DH,'$'
   WELCOME  DB      0AH,0DH,  '                  WELCOME',0DH,0AH,'$'
     WARING  DB   0AH,0DH,     '       WARNING! PASSWORD IS WRONG!','$'
 CHECK  DB        0 ,0
PASSWORD  DB        1,2,3,4,5,6   
 ADM_PASS   DB        6,5,4,3,2,1   
     KEYTAB  DB        0E7H,0D7H,0B7H,077H,0EBH,0DBH
               DB        0BBH,07BH,0EDH,0DDH,0BDH,07DH
               DB        0EEH,0DEH,0BEH,07EH    
       BUF1   DB        7 DUP(?)   
       BUF2   DB        7 DUP(?)
       FLAG   DB        1       
      ERR_W  DB        0AH,0DH,'            WRONG PASSWORD!'
               DB'                    PLEASE INPUT PASSWORD AGAIN!'
               DB 0AH,0DH,'$'
    ERRNUM  DB        0AH,0DH,'PLEASE INPUT NUMKEY!','$'
       FREQ  DW        262,294,330,330,330,349,330,294
              DW        294,262,294,294,392,294,262,247
              DW        262,262,262,330,330,262,262,220
              DW        247,247,330,247,0    
       TIME  DW        10 DUP(0FFFH),01FFEH,2 DUP(0FFFH),01FFEH
              DW        10 DUP(0FFFH),01FFEH,2 DUP(0FFFH),01FFEH
              DW        2 DUP(0FFFH)  
           F  DW        15 DUP(3000),0
           T  DW        15 DUP(1FFEH)
         F_D  DW        523,349,0
         T_D  DW        1 DUP(1FFFH),0FFFH
 DATA  ENDS
 CODE  SEGMENT
             ASSUME    CS:CODE,DS:DATA,ES:DATA
      START:
              MOV      AX,DATA
              MOV      DS,AX    
              MOV      ES,AX  
              MOV 		 DX,20BH   
              MOV 		 AL,85H
              OUT 		 DX,AL  
              MOV 		 AL,0EH  
              OUT 		 DX,AL
              MOV       AX,0  
              MOV       ES,AX
              MOV       DI,0BH*4    
              LEA        AX,DOOR
              MOV       ES:[DI],AX
              MOV       AX,SEG DOOR
              MOV       ES:[DI+2],AX
IN          AL,21H
              AND        AL,0F7H     
              OUT        21H,AL
STI
LEA       DX,MESSNO
CALL     NOR_PIC1  
      T_INT:
              NOP
              JMP       T_INT   
 MOV      AH,4CH
              INT       21H

      DOOR  PROC    NEAR        
              LEA       DX, MESS1  
     FIRST:  
 MOV  AL, FLAG
              CMP  AL, 0
              JZ   WELCOME1        
              CALL      NOR_PIC     
CALL      DDONG   
              CALL    INPUT       
              MOV    CX,6          
              LEA    SI, PASSWORD 
              LEA    DI,BUF1        
             MOV   AL, [DI]
             CMP    AL, 0AH   
             JNZ     M1   
             CALL   SET   
             JMP    DONE
        M1:  
CMP  AL, 0CH 
             JNZ  MMMM   
             CALL   CLEAR  
             JMP   DONE
     MMMM:
 MOV  AL,[SI]
             CMP  AL,[DI]
             JNZ  ERROR
             INC  SI
             INC  DI
             LOOP MMMM
WELCOME1: 
            CALL  WELCOME_PIC
            CALL  WELCOME_SOUD
            JMP   DONE          
ERROR: 
LEA        BP, CHECK
            MOV       AL,[BP]
            CMP       AL,2          
            JNZ        LL1          
            CALL      WARNING_PIC 
            CALL      WARNING_SOUD
            JMP        DONE
        LL1: 
INC        AL
            MOV       [BP], AL
            LEA        DX, ERR_W
JMP        FIRST
      DONE: 
LEA       BP, CHECK   
            MOV       AL,[BP]
            MOV       AL,0
            MOV       [BP],AL    
            MOV       AL,20H
            OUT       20H,AL
            MOV 		DX,20BH   
            MOV		AL,85H
            OUT 		DX,AL
            MOV       AL,0EH   
            OUT        DX,AL
IRET                
 DOOR  ENDP

 SET  PROC      NEAR
LEA       DX, MESS2
FIRST_S:
CALL      NOR_PIC
CALL      DDONG
              CALL     INPUT   
              LEA       DI, BUF1   
              LEA       SI, ADM_PASS 
              MOV       CX, 6
       L0_S: 
 MOV       AL, [DI]
              CMP       AL, [SI]
              JNZ       ERROR_S   
              INC       DI
              INC       SI
              LOOP      L0_S
LEA    DX, MESS4    
              CALL      NOR_PIC
              CALL      DDONG
IN_NEW:
              CALL      INPUT    
              LEA       SI,BUF1 
              LEA       DI,BUF2              
              MOV       CX,6
        L9:  
 MOV      AL, [SI]
              MOV      [DI], AL
              INC       SI
              INC       DI
              LOOP     L9
              LEA      DX, MESS5 
              CALL     NOR_PIC
              CALL     DDONG
              CALL     INPUT
              MOV     CX, 6
              LEA      SI, BUF1    
              LEA      DI, BUF2
MMMMM:
 MOV     AL, [SI]
              CMP       AL, [DI]
              JZ         ASDAD
              LEA       DX,MESS6  
              CALL      NOR_PIC
              CALL      DDONG
              JMP       IN_NEW
     ASDAD: 
 LOOP      MMMMM 
              MOV      CX,6   
              LEA       DI,BUF1
              LEA       SI,PASSWORD
      L_NUM:
              MOV       AL, [DI]
              CMP       AL, 0
              JB        ERR_NUM     
              CMP       AL, 9
              JA        ERR_NUM
              MOV       [SI], AL     
              INC       DI
              INC       SI
              LOOP      L_NUM
              MOV    FLAG, 1   
              LEA       DX, MESS3  
              CALL      NOR_PIC
              CALL      DDONG
              JMP       DONE_S
    ERR_NUM:
              LEA       DX, ERRNUM 
              CALL      NOR_PIC
              CALL      DDONG
              JMP       IN_NEW
    ERROR_S:                        
              LEA       BP,CHECK[1]
              MOV       AL,[BP]
              CMP       AL,2      
              JNZ       L1_S        
              CALL      WARNING_PIC 
              CALL      WARNING_SOUD          
              JMP       DONE_S
       L1_S:  
INC       AL  
              MOV      [BP], AL
              LEA       DX, ERR_W
JMP       FIRST_S
     DONE_S:
              LEA       BP, CHECK[1]
              MOV      AL, [BP]
              MOV      AL, 0
              MOV      [BP], AL
              RET
SET  ENDP

CLEAR  PROC  NEAR
              LEA    DX,MESS2  
    FIRST_C:
              CALL      NOR_PIC
              CALL    DDONG
              CALL    INPUT  
              LEA       DI, BUF1  
              LEA       SI, ADM_PASS
              MOV      CX, 6
       L0_C:
              MOV      AL,[DI]
              CMP       AL,[SI]
              JNZ       ERROR_C  
              INC       DI
              INC       SI
              LOOP     L0_C
LEA       DX, MESS7  
              CALL      NOR_PIC
              CALL      DDONG
              MOV      FLAG,0      
              JMP       DONE_C
 ERROR_c:                        
              LEA       BP,CHECK[1]
              MOV       AL,[BP]
              CMP       AL,2        
              JNZ       L1_C      
              CALL      WARNING_PIC 
              CALL      WARNING_SOUD         
JMP       DONE_C
    L1_C:
              INC       AL  
              MOV       [BP], AL
              LEA       DX, ERR_W
JMP       FIRST_C
     DONE_C:
              LEA       BP, CHECK[1]
              MOV       AL, [BP]
              MOV       AL, 0
              MOV       [BP], AL
              RET
CLEAR ENDP

INPUT PROC NEAR

              MOV        AL, 89H    
              MOV        DX, 20BH
              OUT         DX, AL
LEA         DI,BUF1
AGN:  MOV        AL, 0     
              MOV        DX, 208H  
              OUT         DX, AL
           L0: MOV        DX, 20AH
              IN          AL, DX
              AND        AL, 0FH
             CMP         AL, 0FH
              JZ          AGN     
              MOV       BH, AL  
              CALL       DELAY 
             MOV         AL, 0FEH  
             MOV        BL, AL    
          L1: MOV        DX, 208H
             OUT        DX, AL
             MOV       DX, 20AH
               IN        AL ,DX
              AND      AL, 0FH
              CMP      AL, 0FH
              JNZ       L2  ;有键按下,转L2
              ROL      BL, 1
              MOV      AL, BL
              JMP      L1
          L2: MOV      CL, 4
              SAL       BH, CL      
              AND      BL, 0FH
               OR       BL, BH 
              CALL     DELAY
              LEA      SI, KEYTAB
             MOV      BH, 0
 L3:  MOV     AL, [SI]
             CMP       AL, BL
               JE       L4 
               INC    BH
               INC    SI
               JMP    L3
          L4:  MOV   DX, 20AH
  L5:  IN      AL, DX
              AND     AL, 0FH
              CMP     AL, 0FH
               JNE     L5
               CALL  DELAY
              MOV    [DI], BH 
               INC     DI
              AND    AL, 0FH 
             MOV     AL, BH
              ADD    AL, 30H
              CMP     AL, 3AH
                JL      TTL
              ADD     AL, 7H
       TTL:  MOV      DL, AL
             MOV      AH, 02H
              INT      21H
             MOV      AL ,BH
             CMP      AL,0AH 
               JZ      EXIT
             CMP      AL, 0BH
               JZ      EXIT   
CMP      AL, 0CH
JNZ       AGN  
            EXIT:   RET
INPUT ENDP

DELAY PROC NEAR
            PUSH     AX
            PUSH     CX
            PUSH     DX
            MOV      CX, 1
            MOV      DX, 10
            MOV      AH, 86H
            INT       15H
            POP       DX
            POP       CX
            POP       AX
      RET
DELAY ENDP

NOR_PIC1  PROC NEAR 	 
              MOV       AH,00H 
              MOV       AL,0DH
              INT        10H 
              MOV       AH,0BH
              MOV       BH,0
              MOV       BL,2 
              INT        10H   

              MOV       AH,9
              INT        21H

              MOV       DX,1EH  
              MOV       CX,50H  
     L1_NORF1:  MOV      AH,0CH 
              MOV       AL,14    
              INT        10H
              INC        DX
              CMP       DX,46H
              JNZ        L1_NORF1
              MOV       DX,1EH
              INC        CX
              CMP       CX,0F0H
              JNZ        L1_NORF1
              MOV       DX,47H
              MOV       CX,50H
L2_NORF1:      MOV       AH,0CH
              MOV       AL,1
              INT        10H
              INC        DX
              CMP       DX,0AFH
              JNZ        L2_NORF1
              MOV       DX,47H
              INC        CX
              CMP       CX,0A0H
              JNZ        L2_NORF1

              MOV       DX,47H
              MOV       CX,0A1H

     L5_NORF1:  MOV       AH,0CH
              MOV       AL,1
              INT        10H
              INC        DX
              CMP       DX,0AFH
              JNZ        L5_NORF1
              MOV       DX,47H
              INC        CX
              CMP       CX,0F0H
              JNZ        L5_NORF1

              MOV       DX,46H
              MOV       CX,50H
     L3_NORF1:  MOV      AH,0CH
              MOV       AL,5
              INT        10H
              INC        CX
              CMP       CX,0F0H
              JNZ        L3_NORF1

              MOV       DX,46H
              MOV       CX,0A0H
     L4_NORF1:  MOV       AH,0CH
              MOV        AL,5
              INT         10H
              INC         DX
              CMP        DX,0AFH
              JNZ         L4_NORF1

              MOV       DX,1EH
              MOV       CX,50H
     L6_NORF1:  MOV      AH,0CH
              MOV       AL,5
              INT        10H
              INC        DX
              CMP       DX,0AFH
              JNZ        L6_NORF1

              MOV       DX,1EH
              MOV       CX,0F0H
     L7_NORF1:  MOV      AH,0CH
              MOV       AL,5
              INT        10H
              INC        DX
              CMP       DX,0B0H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -