📄 lgh.asm
字号:
.model small
.DATA
SC DB '按格式输入实时时间 HH:MM:SS $'
HH2 DB 1 DUP(?)
HH1 DB 1 DUP(?)
F1 DB 1 DUP(?)
MM2 DB 1 DUP(?)
MM1 DB 1 DUP(?)
F2 DB 1 DUP(?)
SS2 DB 1 DUP(?)
SS1 DB 1 DUP(?)
F4 DB 0DH,'!$'
X DB 0
KEEP21 DB ?
XS DB 'INPUT ERROR!$'
.STACK
.CODE
START: MOV AX,@DATA
MOV DS,AX
LEA DX,SC
MOV AH,09H
INT 21H
MOV CX,8
MOV SI,0
AGAIN1:MOV AH,01H
INT 21H
MOV HH2[SI],AL
INC SI
LOOP AGAIN1
CLI
MOV DX,213H ;通道1工作在方式3下每秒中断计数一次
MOV AL,37H
OUT DX,AL
MOV DX,210H
MOV AX,1000H
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV AH,35H ;初始化8259,接端口IRQ3
MOV AL,0BH
INT 21H
PUSH BX
PUSH ES
PUSH DS
MOV AX,SEG INTPROC
MOV DS,AX
MOV DX,OFFSET INTPROC
MOV AH,25H
MOV AL,0BH
INT 21H
POP DS
IN AL,21H
MOV KEEP21,AL
AND AL,0F7H
OUT 21H,AL
STI
AGAIN2:MOV AH,02H ;设置光标位置
MOV BH,0 ;页号
MOV DX,1010H ;光标的行列号
INT 10H
MOV DX,OFFSET HH2
MOV AH,09H
INT 21H
MOV AH,01H
INT 16H
JZ AGAIN2
MOV AH,0
INT 16H
CMP AL,1BH
JZ EXIT
JMP AGAIN2
EXIT: MOV AH,02H ;恢复光标位置
MOV BH,0
MOV DX,0
INT 10H
MOV AL,KEEP21 ;恢复原中断屏蔽字
OUT 21H,AL
POP DS
POP DX
MOV AH,25H ;恢复原中断向量
MOV AL,0BH
INT 21H
MOV AH,4CH
INT 21H
INTPROC PROC FAR ;中断服务程序
STI
PUSH AX
PUSH BX
PUSH DS
MOV AX,@DATA
MOV DS,AX
INC SS1
CMP SS1,39H
JBE EXIT1
INC SS2
MOV SS1,30H
CMP SS2,35H
JBE EXIT1
INC MM1
MOV SS2,30H
CMP MM1,39H
JBE EXIT1
INC MM2
MOV MM1,30H
CMP MM2,35H
JBE EXIT1
INC HH1
MOV MM2,30H
CMP HH1,33H
JBE NEXT
CMP HH2,31H
JBE NEXT
MOV HH1,30H
MOV HH2,30H
MOV MM1,30H
MOV MM2,30H
MOV SS1,30H
MOV SS2,30H
NEXT: CMP HH1,39H
JBE EXIT1
MOV HH1,30H
INC HH2
EXIT1:MOV AL,20H
OUT 20H,AL
POP DS
POP BX
POP AX
IRET
INTPROC ENDP
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -