📄 eclock.asm
字号:
CODE SEGMENT
ASSUME CS:CODE
INTPORT1 EQU 0020H
INTPORT2 EQU 0021H
INTQ3 EQU INTERUPT3
INTQ7 EQU INTERUPT7
CONTPORT EQU 00DFH
DATAPORT EQU 00DEH
DATA1 EQU 0500H
DATA2 EQU 0508H
DATA3 EQU 0518H
DATA4 EQU 0520H
DATA5 EQU 0528H
DATA6 EQU 0529H
DATA7 EQU 052AH
DATA8 EQU 052BH
DATA9 EQU 052CH
DATA10 EQU 052EH
ORG 1800H
START: JMP TINT1
TINT1: CALL FORMAT
CLD
MOV DX,004BH
MOV AL,0B6H
OUT DX,AL
MOV DX,004AH
MOV AL,50H
OUT DX,AL
MOV AL,0C3H
OUT DX,AL
MOV SI,DATA3
CALL LEDDISP
MOV AX,0H
MOV DS,AX
CALL WRINTVER
MOV AL,13H
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,0BH
OUT DX,AL
MOV AL,0F7H
OUT DX,AL
WAITING: STI
JMP WAITING
WRINTVER: MOV AX,0H
MOV ES,AX
MOV DI,002CH
LEA AX,INTQ3
STOSW
MOV AX,CS
STOSW
MOV DI,003CH
LEA AX,INTQ7
STOSW
MOV AX,CS
STOSW
RET
INTERUPT3: CLI
MOV AL,DS:[DATA6]
INC AL
MOV DS:[DATA6],AL
CMP AL,14H
JC PLAY
MOV BYTE PTR DS:[DATA6],00H
MOV SI,DATA4
CALL LEDDISP
CALL NEWTIME
CALL CONVERSALL
PLAY: MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
STI
IRET
INTERUPT7: CLI
MOV SI,DATA1
CALL LEDDISP
MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
IRET
LEDDISP: MOV AL,90H
MOV DX,CONTPORT
OUT DX,AL
MOV BYTE PTR DS:[DATA5],00H
LED1: CMP BYTE PTR DS:[DATA5],07H
JA LED2
MOV BL,DS:[DATA5]
MOV BH,0H
MOV AL,CS:[BX+SI]
MOV DX,DATAPORT
OUT DX,AL
ADD BYTE PTR DS:[DATA5],01H
JNZ LED1
LED2: RET
FORMAT: MOV BX,0
MOV WORD PTR DS:[BX+DATA1],5050H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],0079H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],0000H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],0000H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],063FH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],4F5BH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],6D66H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],077DH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],6F7FH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],7C77H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],5E39H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],7179H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F3FH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F40H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],403FH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F3FH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F3FH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F40H
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],403FH
ADD BX,2
MOV WORD PTR DS:[BX+DATA1],3F3FH
MOV BYTE PTR DS:[DATA6],00D
MOV BYTE PTR DS:[DATA7],00D
MOV BYTE PTR DS:[DATA8],00D
MOV BYTE PTR DS:[DATA9],00D
MOV WORD PTR DS:[DATA10],DATA4
RET
CONVERS1: MOV BH,0H
AND AL,0FH
MOV BL,AL
MOV AL,CS:[BX+DATA2]
RET
CONVERS2: PUSH AX
CALL CONVERS1
MOV BX,WORD PTR DS:[DATA10]
MOV DS:[BX],AL
ADD WORD PTR DS:[DATA10],01H
POP AX
PUSH CX
MOV CL,4H
SHR AL,CL
POP CX
CALL CONVERS1
MOV BX,WORD PTR DS:[DATA10]
MOV DS:[BX],AL
RET
CONVERSALL: MOV AL,BYTE PTR DS:[DATA9]
CALL CONVERS2
ADD WORD PTR DS:[DATA10],02H
MOV AL,BYTE PTR DS:[DATA8]
CALL CONVERS2
ADD WORD PTR DS:[DATA10],02H
MOV AL,BYTE PTR DS:[DATA7]
CALL CONVERS2
MOV WORD PTR DS:[DATA10],DATA4
RET
NEWTIME: CMP BYTE PTR DS:[DATA9],59H
JC ADD1
MOV BYTE PTR DS:[DATA9],0D
CMP BYTE PTR DS:[DATA8],59H
JC ADD2
MOV BYTE PTR DS:[DATA8],0D
CMP BYTE PTR DS:[DATA7],23H
JC ADD3
MOV BYTE PTR DS:[DATA7],0D
JMP OK
ADD1: MOV AL,BYTE PTR DS:[DATA9]
ADD AL,1D
DAA
MOV BYTE PTR DS:[DATA9],AL
JMP OK
ADD2: MOV AL,BYTE PTR DS:[DATA8]
ADD AL,1D
DAA
MOV BYTE PTR DS:[DATA8],AL
JMP OK
ADD3: MOV AL,BYTE PTR DS:[DATA7]
ADD AL,1D
DAA
MOV BYTE PTR DS:[DATA7],AL
OK: RET
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -