📄 timer.asm
字号:
DATA SEGMENT
HOUR DB ?
MIN DB ?
SEC DB ?
TS DB 0AH,0DH,'PLEASE INPUT THE CURRENT TIME: $'
TS1 DB ':$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
;-----------输入分钟和秒函数-----------
INPUT PROC
MOV AH,1
INT 21H
SUB AL,30H
CMP AL,6
JGE EXIT1
MUL CL
MOV DL,AL
MOV AH,1
INT 21H
SUB AL,30H
ADD AL,DL
EXIT1: RET
INPUT ENDP
;-----------输入小时函数-----------
INPUT2 PROC
MOV AH,1
INT 21H
SUB AL,30H
CMP AL,2
JG EXIT2
MUL CL
MOV DL,AL
MOV AH,1
INT 21H
SUB AL,30H
CMP AL,4
JG EXIT2
ADD AL,DL
EXIT2: RET
INPUT2 ENDP
;----------输出时间函数--------------
OUTPUT PROC
PUSH DX
PUSH SI
MOV DL,30H
L1: CMP SI,10
JB L2
INC DL
SUB SI,10
JMP L1
L2: MOV AH,2
INT 21H
MOV DX,SI
ADD DL,30H
MOV AH,2
INT 21H
POP SI
POP DX
RET
OUTPUT ENDP
;-----------清屏函数---------------------
CLS PROC
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AX,0600H ;AH=06(滚动),AL=00(全屏空白)
MOV CX,0 ;左上角行:列
MOV DX,184FH ;右下角行:列
MOV BH,7
INT 10H
POP DX
POP CX
POP BX
POP AX
RET
CLS ENDP
;---------------光标位置设置函数----------
POS PROC
PUSH BX
PUSH DX
PUSH AX
MOV BH,0
MOV DX,0048H
MOV AH,2
INT 10H
POP AX
POP DX
POP BX
RET
POS ENDP
;------------主函数---------------------------
MAIN PROC FAR
START: PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,TS
MOV AH,9
INT 21H
MOV CL,10
;--------------输入小时------
CALL INPUT2
MOV HOUR,AL
LEA DX,TS1
MOV AH,9
INT 21H
;--------------输入分钟------
CALL INPUT
MOV MIN,AL
LEA DX,TS1
MOV AH,9
INT 21H
;-------------输入秒-------
CALL INPUT
MOV SEC,AL
WAIT2: MOV AH,1
INT 16H
CMP AL,0DH
JZ EXIT ;检查有无输入回车(停止标志)
MOV BX,20000
WAIT1: MOV CX,11204
DELY: LOOP DELY ;延迟一秒钟
DEC BX
JNZ WAIT1
CALL CLS
INC SEC
CMP SEC,60 ;秒加一
JNZ AD
INC MIN ;分钟加一
MOV SEC,0H
CMP MIN,60
JNZ AD
INC HOUR ;小时加一
MOV MIN,0H
CMP HOUR,24
JNZ AD
MOV HOUR,0H
;-----------------------
AD: CALL POS ;调用清屏函数
;----------------------
MOV AL,HOUR
CBW
MOV SI,AX
CALL OUTPUT ;输出小时
;------------------------
LEA DX,TS1
MOV AH,9
INT 21H
;----------------------
MOV AL,MIN
CBW
MOV SI,AX
CALL OUTPUT ;输出分钟
;------------------------
LEA DX,TS1
MOV AH,9
INT 21H
;----------------------
MOV AL,SEC
CBW
MOV SI,AX
CALL OUTPUT ;输出秒钟
JMP WAIT2
EXIT: RET
MAIN ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -