📄 truetime.asm
字号:
STASG SEGMENT ;堆栈的初始化
DB 128 DUP(?)
STASG ENDS
DATA SEGMENT ;数据的定义
PRIN DB '****************************************************'
DB 0DH,0AH,0DH,0AH,0DH,0AH
DB ' WELCOME TO USE THE SYSTEM'
DB 0DH,0AH,0DH,0AH
DB ' YOU CAN READ THE TIME '
DB 0DH,0AH,0DH,0AH,0DH,0AH
DB 'NOW THE TIME IS: ',0DH,0AH,0DH,0AH
DB 'NOW THE DAY IS : ',0DH,0AH,0DH,0AH,0DH,0AH
DB ' THANKS TO USE THE SYSTEM!!!',0DH,0AH,0DH,0AH
DB '****************************************************'
DB 0DH,0AH,0DH,0AH,'$'
DAY1 DB 'MONDAY$'
DAY2 DB 'TESURDAY$'
DAY3 DB 'WEDNESDAY$'
DAY4 DB 'THIRSDAY$'
DAY5 DB 'FIRDAY$'
DAY6 DB 'SATURDAY$'
DAY0 DB 'SUNDAY$'
DATA ENDS
CODE SEGMENT ;主函数
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
CALL CLRSCRN
MOV AH,9
LEA DX,PRIN
INT 21H
JMP READDAY
CLRSCRN PROC ;清屏函数
MOV AH,6
MOV AL,0
MOV BH,1FH
MOV CX,0
MOV DX,184FH
INT 10H
RET
CLRSCRN ENDP
READDAY: MOV AH,2
MOV BH,0
MOV DH,10
MOV DL,20
INT 10H ;读取显示星期几的地址:为第10行第20列
MOV AH,2AH ;读取星期几
INT 21H
CMP AL,0
JZ SUN
CMP AL,1
JZ MON
CMP AL,2
JZ TUS
CMP AL,3
JZ WED
CMP AL,4
JZ THIR
CMP AL,5
JZ FIR
CMP AL,6
JZ SAT
SUN: LEA DX,DAY0
MOV AH,9
INT 21H
JMP READ
MON: LEA DX,DAY1
MOV AH,9
INT 21H
JMP READ
TUS: LEA DX,DAY2
MOV AH,9
INT 21H
JMP READ
WED: LEA DX,DAY3
MOV AH,9
INT 21H
JMP READ
THIR: LEA DX,DAY4
MOV AH,9
INT 21H
JMP READ
FIR: LEA DX,DAY5
MOV AH,9
INT 21H
JMP READ
SAT: LEA DX,DAY6
MOV AH,9
INT 21H
READ: ;开始读取时间
MOV BX,0B800H
MOV ES,BX
MOV DI,160*8+2*20 ;读取显示时间的地址:为第8行第20列
PUSH DI
MOV AL,10 ;数据AL的初始化
READDATE: ;读取日期
DEC AL
CMP AL,7
JB READTIME ;当读完‘日’后,就跳至标号READTIME处
CALL PRINT
ADD DI,6
JMP SHORT READDATE
READTIME: ;读取时间
SUB AL,2
CMP AL,0FEH
JE SIGN ;当读完‘秒’后,就跳至标号SIGN处
CALL PRINT
ADD DI,6
JMP SHORT READTIME
SIGN: ;显示格式
POP DI
ADD DI,4
MOV BYTE PTR ES:[DI],'/'
ADD DI,6
MOV BYTE PTR ES:[DI],'/'
ADD DI,12
MOV BYTE PTR ES:[DI],':'
ADD DI,6
MOV BYTE PTR ES:[DI],':'
MOV AH,1
INT 21H
CMP AL,10H ;当从键盘输入大小写的字母Q时就表示退出
JE QUIT
JMP READ ;继续读取时间
QUIT: ;退出
MOV AX,4C00H
INT 21H
PRINT PROC ;显示时间
PUSH AX
PUSH CX
OUT 70H,AL
IN AL,71H
MOV AH,AL
MOV CL,4
SHR AH,CL
AND AL,00001111B
ADD AH,30H
ADD AL,30H
MOV BYTE PTR ES:[DI],AH
MOV BYTE PTR ES:[DI+2],AL
POP CX
POP AX
RET
PRINT ENDP
EXIT: MOV AX,4C00H ;结束
INT 21H
MAIN ENDP
CODE ENDS
END MAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -