📄 last.asm
字号:
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 + -