📄 dianzi1.asm
字号:
STACK SEGMENT STACK 'STACK'
DB 1024 DUP (0)
STACK ENDS
;
DATA SEGMENT
BWORD EQU THIS BYTE
R0 DW (?)
R1 DW (?)
R2 DW (?)
R3 DW (?)
R4 DW (?)
R5 DW (?)
R6 DW (?)
R7 DW (?)
;
TIMe1 DW (?)
TIMe2 DW (?)
TIME3 DW (?)
TIME4 DW (?)
;
LED1 DB (?)
LED2 DB (?)
LED3 DB (?)
LED4 DB (?)
LED5 DB (?)
LED6 DB (?)
LED7 DB (?)
LED8 DB (?)
LED9 DB (?)
LED10 DB (?)
LED11 DB (?)
LED12 DB (?)
LED13 DB (?)
LED14 DB (?)
LED15 DB (?)
LED16 DB (?)
LED17 DB (?)
LED18 DB (?)
LED19 DB (?)
YEAR_REG DB (?)
MOTH_REG DB (?)
DATE_REG DB (?)
S_REG DB (?)
M_REG DB (?)
H_REG DB (?)
;*************************************************************
s0 DB 7
DB 5fh,9,0,0
DB 7ch,9,1,-1 ;5f---- -
DB 7ch,9,1,0 ;7c---- |
DB 5fh,9,0,1
DB 7ch,9,0,1
DB 7ch,9,-1,0
DB 5fh,0,0,-1
s1 DB 7
DB 5fh,0,0,0
DB 7ch,0,1,-1 ;5f---- -
DB 7ch,0,1,0 ;7c---- |
DB 5fh,0,0,1
DB 7ch,9,0,1
DB 7ch,9,-1,0
DB 5fh,0,0,-1
s2 DB 7
DB 5fh,9,0,0
DB 7ch,0,1,-1 ;5f---- -
DB 7ch,9,1,0 ;7c---- |
DB 5fh,9,0,1
DB 7ch,0,0,1
DB 7ch,9,-1,0
DB 5fh,9,0,-1
s3 DB 7
DB 5fh,9,0,0
DB 7ch,0,1,-1 ;5f---- -
DB 7ch,0,1,0 ;7c---- |
DB 5fh,9,0,1
DB 7ch,9,0,1
DB 7ch,9,-1,0
DB 5fh,9,0,-1
s4 DB 7
DB 5fh,0,0,0
DB 7ch,9,1,-1 ;5f---- -
DB 7ch,0,1,0 ;7c---- |
DB 5fh,0,0,1
DB 7ch,9,0,1
DB 7ch,9,-1,0
DB 5fh,9,0,-1
s5 DB 7
DB 5fh,9,0,0
DB 7ch,9,1,-1 ;5f---- -
DB 7ch,0,1,0 ;7c---- |
DB 5fh,9,0,1
DB 7ch,9,0,1
DB 7ch,0,-1,0
DB 5fh,9,0,-1
s6 DB 7
DB 5fh,0,0,0
DB 7ch,9,1,-1 ;5f---- -
DB 7ch,9,1,0 ;7c---- |
DB 5fh,9,0,1
DB 7ch,9,0,1
DB 7ch,0,-1,0
DB 5fh,9,0,-1
s7 DB 7
DB 5fh,9,0,0
DB 7ch,0,1,-1 ;5f---- -
DB 7ch,0,1,0 ;7c---- |
DB 5fh,0,0,1
DB 7ch,9,0,1
DB 7ch,9,-1,0
DB 5fh,0,0,-1
s8 DB 7
DB 5fh,9,0,0
DB 7ch,9,1,-1 ;5f---- -
DB 7ch,9,1,0 ;7c---- |
DB 5fh,9,0,1
DB 7ch,9,0,1
DB 7ch,9,-1,0
DB 5fh,9,0,-1
s9 DB 7
DB 5fh,9,0,0
DB 7ch,9,1,-1 ;5f---- -
DB 7ch,0,1,0 ;7c---- |
DB 5fh,0,0,1
DB 7ch,9,0,1
DB 7ch,9,-1,0
DB 5fh,9,0,-1
;===============================================================
hang DB 20
lie DB 10
t0 DB (?)
t1 DB (?)
t2 DB 0
t3 DB 0
t4 DB (?)
t5 DB (?)
;-----------------------------------------------------------------
xings DB 'p','r','e','s','s',' ','[','e','s','c',']',' ','t','o',' ','e','x','i','t'
xingxings DB 'T','h','u','r','s','d','a','y'
;*************************************************************
DATA ENDS
;
VIDEO SEGMENT AT 0B800H
WD_BUFFER LABEL WORD
V_BUFF DB 25*80*2 DUP (?)
VIDEO ENDS
;
PROGrAM SEGMENT
;
MAIN PROC FAR
ASSUME CS:PROGRAM,DS:DATA,SS:STACK,ES:VIDEO
;
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AX,VIDEO
MOV ES,AX
MOV TiMe1,0000H
MOV TiMe2,184FH
MOV BH,0FH
CALL CLR_SCREen
MOV AL,2eh
MOV AH,9
MOV CH,9
MOV CL,43
CALL display
MOV CH,10
CALL display
MOV CL,33
CALL display
MOV CH,9
CALL display
CALL initiate
CALL initiate2
DO_WAIT: MOV AH,1
INT 16H
JZ NO_KEY
YES_KEY: MOV AH,0
INT 16H
CMP AL,1BH
JNZ NO_KEY
CALL exit
NO_KEY: CALL READ_TIME
CALL READ_DATE
CALL CONVERT_ASCII
CALL guangzhu
CALL zhou
; CALL DISPLAY_TIME
CALL DISPLAY_DATE
JMP DO_WAIT
EXIT: MOV TiMe1,0000H
MOV time2,184FH
MOV BH,0FH
CALL CLR_SCREEN
RET
MAIN ENDP
;
READ_TIME PROC NEAR
MOV AH,02H
INT 1AH
MOV H_REG,CH
MOV M_REG,CL
MOV S_REG,DH
RET
READ_TIME ENDP
;
READ_DATE PROC NEAR
MOV AH,04H
INT 1AH
MOV YEAR_REG,CL
MOV MOTH_REG,DH
MOV DATE_REG,DL
RET
read_date ENDP
CONVERT_ASCII PROC NEAR
MOV AL,H_REG
AND AL,0F0H
MOV CL,4
ROR AL,CL
ADD AL,30H
MOV LED1,AL
MOV AL,H_REG
AND AL,0FH
ADD AL,30H
MOV LED2,AL
MOV AL,M_REG
AND AL,0F0H
MOV CL,4
ROR AL,CL
ADD AL,30H
MOV LED4,AL
MOV AL,M_REG
AND AL,0FH
ADD AL,30H
MOV LED5,AL
MOV AL, S_REG
AND AL,0F0H
MOV CL,4
ROR AL,CL
ADD AL,30H
MOV LED7,AL
MOV AL,S_REG
AND AL,0FH
ADD AL,30H
MOV LED8,AL
MOV LED3,3AH
MOV LED6,3AH
;
MOV AL,YEAR_REG
AND AL,0F0H
MOV CL,4
ROR AL,CL
ADD AL,30H
MOV LED12,AL
MOV AL,YEAR_REG
AND AL,0FH
ADD AL,30H
MOV LED13,AL
MOV AL,MOTH_REG
AND AL,0F0H
MOV CL,4
ROR AL,CL
ADD AL,30H
MOV LED15,AL
MOV AL,MOTH_REG
AND AL,0FH
ADD AL,30H
MOV LED16,AL
MOV AL,DATE_REG
AND AL,0F0H
MOV CL,4
ROR AL,CL
ADD AL,30H
MOV LED18,AL
MOV AL,DATE_REG
AND AL,0FH
ADD AL,30H
MOV LED19,AL
MOV LED10,32H
MOV LED11,30H
MOV LED14,2DH
MOV LED17,2DH
RET
CONVERT_ASCII ENDP
;
DISPLAY PROC NEAR
PUSH BX
PUSH CX
PUSH AX
MOV AL,160
MUL CH
MOV BL,CL
ROL BL,1
MOV BH,0
ADD BX,AX
POP AX
MOV ES:[WD_BUFFER+BX],AX
POP CX
POP BX
RET
DISPLAY ENDP
;
DISPLAY_TIME PROC NEAR
MOV R0,8
LEA BX,LED1
MOV CH,16
MOV CL,38
DISPLAY_TIME1: MOV AL,[BX]
MOV AH,1EH
CALL DISPLAY
INC CX
INC BX
DEC R0
JNZ DISPLAY_TIME1
RET
DISPLAY_TIME ENDP
;
DISPLAY_DATE PROC NEAR
MOV R0,10
LEA BX,LED10
MOV CH,16
MOV CL,27
DISPLAY_DATE1: MOV AL,[BX]
MOV AH,9
CALL DISPLAY
INC CX
INC BX
DEC R0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -