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

📄 last.asm

📁 本程序有详细的注释,切运行无误 ,程序模块清晰,移植性好,可以实现密码的识别,具有报警的功能
💻 ASM
📖 第 1 页 / 共 2 页
字号:
       COUNT  EQU       6
      NUMBER  EQU       3
    CLEARALL  MACRO     P1,P2,P3,P4 ;all screen
              MOV       AL,0
              MOV       BH,8
              MOV       CH,P1       ;清屏区域左上角行数
              MOV       CL,P2       ;清屏区域左上角列数
              MOV       DH,P3       ;清屏区域右下角行数
              MOV       DL,P4       ;清屏区域右下角列数 ,即清屏坐标为:(ch,cl),(dh,dl)
              MOV       AH,6
              INT       10H
              MOV       AH,2
              MOV       DH,3        ;光标所在行数
              MOV       DL,29       ;光标所在列数
              MOV       BH,0        ;光标所在页数
              INT       10H
              ENDM
        DATA  SEGMENT
     WELCOME  DB        'WELCOME TO YOU (any key to run)',24H
     MESSAGE  DB        'please input password(N): exit(e): ',0DH,0AH,24H
    MESSAGE1  DB        '*** input password(N): modify the password(Y): exit(E): time(T): music(M):*** ',0DH,0AH,24H
     STRING1  DB        'Modify Password:',24H
     STRING2  DB        0DH,0AH,'Confirm Password:',24H
     STRING3  DB        0DH,0AH,'Not match !!! Press any key to return',0DH,0AH,24H
     WARINGS  DB        0DH,0AH,'very sorry !!! system will exit in 6 seconds',0DH,0AH,24H
       NOTES  DB        0DH,0AH,'when over return voluntarily (any key end ).share now!!',0DH,0AH,24H
    STRING31  DB        0DH,0AH,'successfull operation !!! Press any key to menu',0DH,0AH,24H
     STRING4  DB        0DH,0AH,'Input Password:',24H
     STRING5  DB        0DH,0AH,'Password is right! Press any key to menu.',0DH,0AH,24H
     STRING6  DB        0DH,0AH,'Password is wrong! Pleas input again.',0AH,0DH,24H
     KEYWORD  DB        31H,32H,33H,34H,35H,36H
     KEYBAK1  DB        32 DUP (0)
     KEYBAK2  DB        32 DUP (0)
      BUFFER  DB        32 DUP (0)
       TIMES  DB        NUMBER
       TIME1  DB        'log in time is  '
       TIME2  DB        '00:00:00'
      CTIME0  DB        'curent time '
      CTIME1  DB        '00:00:00'
     TEABLE1  DW        1522H,1522H,1522H,1522H,1522H,1522H,1522H,1522H
              DW        1522H,1522H,1522H,1522H,1522H,1522H,1522H,1522H
              DW        1522H,1522H,1522H,1522H,1522H,1522H,1522H,1522H
              DW        1522H,1522H
              DW        0
     TEABLE3  DW        1024H,1024H,1024H,1024H,1024H,1024H,1024H,1024H
              DW        1024H,1024H,1024H,1024H,1024H,1024H,1024H,1024H
              DW        0
     TEABLE2  DW        196,220
              DW        262,262,262,262,262,220,196
              DW        262,262,262,262,294,262,220,262
              DW        294,294,294,294,294,262,220
              DW        294,294,294,294,330,294,330,392
              DW        440,440,392,440,392,330
              DW        294,294,330,294,262,220,196,220
              DW        262,262,262,262,262,220
              DW        262,196,220
              DW        440,440,392,440,524,440
              DW        392,330,294,262,220,196,220
              DW        262,262,262,262,294,262
              DW        262,330,392
              DW        440,440,440,440,524,440
              DW        392,392,392,440,392,330,294
              DW        262,262,262,262,294
              DW        330,330,294
              DW        262,262,262,262,524,440
              DW        392,392,392,440,392,330,392
              DW        440,524,524,440,392
              DW        392,330,392
              DW        440,440,440,440,524,440
              DW        392,392,392,440,392,330,294
              DW        262,262,262,262,392
              DW        330,330,294
              DW        262,262,262,262,294,330
              DW        392,392,330,392,330,392
              DW        440
              DW        9,9,196,660,294,294,262
              DW        262,-1
        TIME  DW        400,400
              DW        400,200,400,400,800,400,400
              DW        400,200,400,200,200,800,400,400
              DW        400,200,400,400,800,400,400
              DW        400,200,400,200,200,800,400,400
              DW        400,800,400,800,400,400
              DW        400,200,200,400,400,800,400,400
              DW        400,200,400,400,800,800
              DW        1600,800,800
              DW        400,800,400,800,400,400
              DW        400,400,400,400,800,400,400
              DW        400,800,400,800,400,200
              DW        2400,400,400
              DW        400,800,400,800,400,400
              DW        400,800,200,200,800,400,400
              DW        400,800,400,800,800
              DW        2400,400,400
              DW        400,800,400,800,400,400
              DW        400,800,200,200,800,400,400
              DW        800,400,800,400,200
              DW        2400,400,400
              DW        400,800,400,800,400,400
              DW        400,800,200,200,800,400,400
              DW        400,800,400,800,800
              DW        2400,400,400
              DW        400,800,400,800,400,400
              DW        400,800,400,800,400,400
              DW        3200
              DW        800,400,400,400,400,400,400
              DW        4000
        DATA  ENDS

        CODE  SEGMENT
              ASSUME    CS:CODE, DS:DATA ,
        MAIN  PROC      FAR
              MOV       AX,DATA
              MOV       DS,AX
              MOV       ES,AX
              MOV       AH,2        ;Dos功能调用,2H 获得系统时间
              INT       1AH         ;Dos功能调用(1AH)CH:CL 时:分
                                     ;DH:DL 秒:1/100秒
              MOV       AX,CX
              MOV       CX,2
              LEA       SI,TIME2    ;小时的转换
              CALL      NUMTOASCII  ;数字转化为ASCII
              MOV       AH,AL       ;分钟转化为ASCII
              MOV       CX,2
              LEA       SI,TIME2+3
              CALL      NUMTOASCII
              MOV       AH,DH       ;秒的转换
              MOV       CX,2
              LEA       SI,TIME2+6
              CALL      NUMTOASCII
              MOV       AH,09H
              MOV       DX,OFFSET WELCOME
              INT       21H
              MOV       AH,0        ;等待输入
              INT       16H
    WAITING:  CLEARALL          0,0,35,79
              MOV       AH,2
              MOV       BH,0
              MOV       DX,0
              INT       10H
              MOV       AH,09H      ;显示字符串 (输入密码与退出)
              MOV       DX,OFFSET MESSAGE
              INT       21H
              MOV       AH,0        ;等待输入
              INT       16H
              CMP       AL,6EH      ;如果输入的是N/n那么就转到输入秘码
              JE        INPUT0
              CMP       AL,4EH
              JE        INPUT0
              CMP       AL,1BH      ;如果输入的是Esc那么就退出程序
              JE        L1
              JMP       WAITING
         L1:  MOV       AH,4CH
              INT       21H
   WAITING1:  CLEARALL          0,0,35,79
              MOV       AH,2
              MOV       BH,0
              MOV       DX,0
              INT       10H
              MOV       AH,09H
              MOV       DX,OFFSET MESSAGE1      ;显示修改与退出菜单
              INT       21H
              MOV       AH,0        ;等待输入
              INT       16H
              CMP       AL,6EH      ;如果输入的是N/n那么就转到输入秘码
              JE        INPUT0
              CMP       AL,4EH
              JE        INPUT0
              CMP       AL,79H      ;如果输入的是Y/y那么就转到修改秘码
              JE        MODIFY
              CMP       AL,59H
              JE        MODIFY
              CMP       AL,74H      ;如果输入的是T/t那么就转到登录时间查询
              JE        DISPLAY00
              CMP       AL,54H
              JE        DISPLAY00
              CMP       AL,6DH      ;如果输入是M那么就转到听音乐
              JE        MUSIC0
              CMP       AL,4DH
              JE        MUSIC0
              CMP       AL,1BH      ;如果输入的是Esc那么就退出程序
              JE        EXITO
              JMP       WAITING1
      EXITO:  MOV       AH,4CH
              INT       21H
     INPUT0:  JMP       INPUT
   WAITING0:  JMP       WAITING1
     MUSIC0:  JMP       MUSIC
  DISPLAY00:  JMP       DISPLAY0
     MODIFY:  MOV       AH,09H      ;显示字符串modify Password:
              MOV       DX,OFFSET STRING1
              INT       21H
              MOV       BX,OFFSET KEYBAK1       ;输入秘码
              CALL      GETKEYS     ;获得输入秘码,保存到keyword
              MOV       AH,09H      ;显示字符串Confirm Password:
              MOV       DX,OFFSET STRING2
              INT       21H
              MOV       BX,OFFSET KEYBAK2       ;请再次输入秘码
              CALL      GETKEYS     ;再次获得输入秘码,保存到keybak
              MOV       CX,COUNT    ;比较两次输入的秘码是不是一样
    CMPKEY1:  MOV       SI,OFFSET KEYBAK1
              MOV       DI,OFFSET KEYBAK2
        REPZ  CMPSB

⌨️ 快捷键说明

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