📄 know.asm
字号:
DATA SEGMENT
temp1 dw ?
temp2 dw ?
char1 DB ?
char2 DB ?
char3 DB ?
char4 DB ?
char5 DB ?
char6 DB ?
char7 DB ?
char8 DB ?
char9 DB ?
char10 DB ?
char11 DB ?
char12 DB ?
char13 DB ?
char14 DB ?
char15 DB ?
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 ?
led20 DB ?
led21 DB ?
led22 db ?
led23 db ?
led24 db ?
led25 db ?
DATA ENDS
;----------------------------------------
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
mov temp1,0000h
mov temp2,184fh
mov bh,37h ;set background color
call clr_screen
bigloop:
MOV AH,1
INT 16H ;判断有无字符输入
JZ time
MOV AH,0 ;读键盘
INT 16H
CMP AL,1BH ;esc键的ascii码
JNE TIME
JMP EXIT
;----------------------------------------------------------------------------
time: MOV AH,2CH ;读时间 (cx:dx)=time (ch)=hour
INT 21H ;(cl)=minute (dh)=second (dl)=百分秒
mov al,ch
mov ah,0
mov bh,10
div bh
add al,30h
mov led15,al
add ah,30h
mov led16,ah
mov al,cl
mov ah,0
mov bh,10
div bh
add al,30h
mov led18,al
add ah,30h
mov led19,ah
mov al,dh
mov ah,0
mov bh,10
div bh
add al,30h
mov led21,al
add ah,30h
mov led22,ah
mov al,dl
mov ah,0
mov bh,10
div bh
add al,30h
mov led24,al
add ah,30h
mov led25,ah
mov led3,3ah
mov led6,3ah
mov led9,3ah
;------------------------------------------------------------------------------
MOV AH,2AH ;取日期 (cx:dx)=date (cx)=year(1980-2099)
INT 21H ;(dh)=month(1-12) (dl)=day(1-31) (al)=week
mov temp1,al
and temp1,30h
mov led13,temp1 ;week
;-------------------------------------------------------------------------------
mov ah,04h ;read date CH=century(BCD),CL=year(BCD)
int 1aH ;DH=month,DL=day
mov temp1,cx ;year
mov al,cl
and al,0f0h
mov cl,4
ror al,cl
add al,30h
mov led3,al
mov cx,temp1
and cl,0fh
add cl,30h
mov led4,cl
mov al,dh ;month
and al,0f0h
mov cl,4
ror al,cl
add al,30h
mov led6,al
and dh,0fh
add dh,30h
mov led7,dh
mov al,dl ;day
and al,0f0h
mov cl,4
ror al,cl
add al,30h
mov led9,al
and dl,0fh
add dl,30h
mov led10,dl
mov led1,32h ;'2'
mov led2,30h ;'0'
mov led5,2dh ;'-'
mov led8,2dh
MOV led14,00H ;空格
mov led12,30h ;'0'
MOV char1,57H ;W
MOV char2,45H ;E
MOV char3,4CH ;L
MOV char4,43H ;C
MOV char5,4FH ;O
MOV char6,4DH ;M
MOV char7,45H ;E
MOV char8,21H ;!
MOV char9,4EH ;N
MOV char10,4FH ;O
MOV char11,57H ;W
MOV char12,00H ;空格
MOV char13,49H ;I
MOV char14,53H ;S
MOV char15,00H ;空格
MOV led17,3AH ;':'
MOV led20,3AH
MOV led23,3AH
MOV led11,2FH ;'/'
MOV AH,02H ;置光标位置
MOV dh,05h
mov dl,10h ;dh=row dl=column
MOV BH,0
INT 10H
call disp_all
EXIT: mov ah,4ch
int 21h
MAIN ENDP
;----------------------------------
disp_all proc near
LEA SI,char1 ;'W'
MOV bh,15
disp_cha:
MOV AL,[SI]
CALL display
INC SI
DEC bh
CMP bh,0
jnz disp_cha
lea si,led1
mov bh,25
disp_td :
mov al,[si]
call display
inc si
dec bh
cmp bh,0
jnz disp_td
jmp bigloop
ret
disp_all ENDP
;----------------------------------------------------------
display PROC NEAR
PUSH AX
PUSH BX
MOV AH,0EH ;写字符到当前光标位置,且光标位置前进一格
MOV BL,07H ;bl=color
MOV BH,0 ;bh=页号
INT 10H
POP BX
POP AX
RET
display ENDP
;----------------------------------
clr_screen proc near
mov ah,06h
mov cx,temp1 ;top=row*col
mov dx,temp2 ;botten=row*col
int 10h
mov ah,02h
mov dh,24
mov dl,80
mov bh,0
int 10h
ret
clr_screen endp
;---------------------------------
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -