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

📄 last.asm

📁 本程序有详细的注释,切运行无误 ,程序模块清晰,移植性好,可以实现密码的识别,具有报警的功能
💻 ASM
📖 第 1 页 / 共 2 页
字号:
              JZ        MODIFYOK    ;三次输入的不一样则按任意键就会结束程序
              MOV       AH,09H      ;Not match and press any key to return.
              MOV       DX,OFFSET STRING3
              INT       21H
              MOV       AH,00H      ;键盘扫描码 ah
              INT       16H
              JMP       WAITING1
   MODIFYOK:  MOV       CX,COUNT
              MOV       SI,OFFSET KEYBAK1
              MOV       DI,OFFSET KEYWORD
              REP       MOVSB
         OK:  MOV       SI,OFFSET TEABLE3       ;success sound
              MOV       DI,OFFSET TIME
         L5:  MOV       CX,[SI]
              CMP       CX,0
              JE        REMENU
              MOV       BX,[DI]
              CALL      GENSOUND
              ADD       SI,2
              ADD       DI,2
              JMP       L5
     REMENU:  MOV       AH,09H      ;sucess and press any key to return.
              MOV       DX,OFFSET STRING31
              INT       21H
              MOV       AH,00H      ;键盘扫描码 ah
              INT       16H
              JMP       WAITING1
   DISPLAY0:  JMP       DISPLAY1
  WAITING00:  JMP       WAITING0
      MUSIC:  MOV       AH,09H      ;显示字符串notes
              MOV       DX,OFFSET NOTES
              INT       21H
              MOV       SI,OFFSET TEABLE2
              MOV       DI,OFFSET TIME
         L3:  MOV       CX,[SI]
              CMP       CX,-1
              JE        WAITING00
              MOV       BX,[DI]
              CALL      GENSOUND
              ADD       SI,2
              ADD       DI,2
              MOV       AH,06
              MOV       DL,0FFH
              INT       21H
              JNE       WAITING00
              JMP       L3
      INPUT:  MOV       AH,09H      ;显示字符串Input Password:
              MOV       DX,OFFSET STRING4
              INT       21H
              MOV       BX,OFFSET BUFFER        ;输入秘码
              CALL      GETKEYS     ;获得输入秘码,保存到buffer
              MOV       CX,COUNT    ;是否输入了正确的秘码
    CMPKEY2:  MOV       SI,OFFSET KEYWORD
              MOV       DI,OFFSET BUFFER
        REPZ  CMPSB
              JZ        INPUTOK     ;两次输入的不一样则按任意键就会结束程序
              DEC       TIMES
              CMP       TIMES,0
              JZ        EXIT
              MOV       AH,09H      ;显示字符串Password is wrong!,Pleas input again.
              MOV       DX,OFFSET STRING6
              INT       21H
              JMP       INPUT
    INPUTOK:  JMP       OK
 WAITING000:  JMP       WAITING00
   DISPLAY1:  MOV       CH,0        ;URRENT TIME IS’
              MOV       CL,16
              LEA       BP,TIME1
              MOV       DH,46
              MOV       DL,46
              CALL      DISP
              MOV       CH,0        ;;显示登录系统时间
              MOV       CL,8
              LEA       BP,TIME2
              MOV       DH,47
              MOV       DL,46
              CALL      DISP
              MOV       AH,2        ;Dos功能调用,2H 获得系统时间
              INT       1AH         ;Dos功能调用(1AH)CH:CL 时:分
                                     ;DH:DL 秒:1/100秒
              MOV       AX,CX
              MOV       CX,2
              LEA       SI,CTIME1   ;小时的转换
              CALL      NUMTOASCII  ;数字转化为ASCII
              MOV       AH,AL       ;分钟转化为ASCII
              MOV       CX,2
              LEA       SI,CTIME1+3
              CALL      NUMTOASCII
              MOV       AH,DH       ;秒的转换
              MOV       CX,2
              LEA       SI,CTIME1+6
              CALL      NUMTOASCII
              MOV       CH,0        ;URRENT TIME IS’
              MOV       CL,12
              LEA       BP,CTIME0
              MOV       DH,46
              MOV       DL,64
              CALL      DISP
              MOV       CH,0        ;;显示登录系统时间
              MOV       CL,8
              LEA       BP,CTIME1
              MOV       DH,47
              MOV       DL,64
              CALL      DISP
              MOV       AH,06
              MOV       DL,0FFH
              INT       21H
              JNE       WAITING000
              JMP       DISPLAY1
       EXIT:  MOV       AH,09H      ;显示字符串waring time
              MOV       DX,OFFSET WARINGS
              INT       21H
              MOV       SI,OFFSET TEABLE1       ;waring sound
              MOV       DI,OFFSET TIME
         L4:  MOV       CX,[SI]
              CMP       CX,0
              JE        OVER
              MOV       BX,[DI]
              CALL      GENSOUND
              ADD       SI,2
              ADD       DI,2
              JMP       L4
       OVER:  MOV       AH,4CH
              INT       21H
        MAIN  ENDP
     GETKEYS  PROC      NEAR
              MOV       CX,COUNT    ;设置循环计数为6,能够保存六个秘码
     GETKEY:  MOV       AH,00H      ;等待输入秘码
              INT       16H
              MOV       BYTE PTR [BX],AL        ;将输入的秘码保存到Bx指向的地址处
              MOV       AH,02H      ;在当前光标位置显示*
              MOV       DL,'*'
              INT       21H
              INC       BX
              LOOP      GETKEY
              RET
     GETKEYS  ENDP
  NUMTOASCII  PROC      NEAR        ;这个函数完成了,从AX提取出它的16位的内容,保存在SI为首地址的地方里面,CX的表示                                    ;CX是个数。AX是从AH开始有效的.
              PUSH      AX
              PUSH      BX
              PUSH      SI
         LP:  PUSH      CX
              MOV       CH,0
              MOV       CL,4
              ROL       AX,CL       ;;循环左依次移取小时的十位和个位
              MOV       BL,AL
              AND       BL,0FH
              OR        BL,30H
              MOV       [SI],BL     ;;存放转换后的ASCII在TIME2中
              POP       CX
              INC       SI
              LOOP      LP
              POP       SI
              POP       BX
              POP       AX
              RET
  NUMTOASCII  ENDP
        DISP  PROC      NEAR
              PUSH      AX
              PUSH      BX
              MOV       AH,13H      ;;显示字串(ES:BP 串地址,CX=串长,DH:DL=行:列)
              MOV       AL,0
              MOV       BH,0
              MOV       BL,2
              INT       10H
              POP       BX
              POP       AX
              RET
        DISP  ENDP
    GENSOUND  PROC      NEAR
              PUSH      DX
              MOV       AL,0B6H
              OUT       43H,AL
              MOV       DX,8H
              MOV       AX,3208H
              DIV       CX
              OUT       42H,AL
              MOV       AL,AH
              OUT       42H,AL
              IN        AL,61H
              MOV       AH,AL
              OR        AL,3
              OUT       61H,AL
         L2:  PUSH      DX
              PUSH      AX
              MOV       DX,8H
              MOV       AX,0F05H
         S1:  SUB       AX,1
              SBB       DX,0
              JNZ       S1
              POP       AX
              POP       DX
              DEC       BX
              JNZ       L2
              MOV       AL,AH
              OUT       61H,AL
              POP       DX
              RET
    GENSOUND  ENDP
        CODE  ENDS
              END       MAIN

⌨️ 快捷键说明

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