-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtimer24h.asm
More file actions
108 lines (85 loc) · 1.64 KB
/
Copy pathtimer24h.asm
File metadata and controls
108 lines (85 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
SHOW MACRO B ;show ASCII B
MOV AH,02H
MOV DL,B
INT 21H
ENDM
STIME MACRO ;show time xx:xx:xx
MOV SI,OFFSET TIME
SHOW 0DH
SHOW [SI]
SHOW [SI+01H]
SHOW 3AH
SHOW [SI+02H]
SHOW [SI+03H]
SHOW 3AH
SHOW [SI+04H]
SHOW [SI+05H]
ENDM
ADD1S MACRO ;+1s
MOV SI,OFFSET TIME
INC BYTE PTR[SI+05H]
CMP BYTE PTR[SI+05H],3AH
JB C1
MOV BYTE PTR[SI+05H],30H
INC BYTE PTR[SI+04H]
CMP BYTE PTR[SI+04H],36H
JB C1
MOV BYTE PTR[SI+04H],30H
INC BYTE PTR[SI+03H]
CMP BYTE PTR[SI+03H],3AH
JB C1
MOV BYTE PTR[SI+03H],30H
INC BYTE PTR[SI+02H]
CMP BYTE PTR[SI+02H],36H
JB C1
MOV BYTE PTR[SI+02H],30H
INC BYTE PTR[SI+01H]
CMP BYTE PTR[SI],32H ;24:00:00->00:00:00
JB C2
CMP BYTE PTR[SI+01H],34H
JB C2
MOV BYTE PTR[SI],30H
MOV BYTE PTR[SI+01H],30H
MOV BYTE PTR[SI+02H],30H
MOV BYTE PTR[SI+03H],30H
MOV BYTE PTR[SI+04H],30H
MOV BYTE PTR[SI+05H],30H
JMP C1
C2: CMP BYTE PTR[SI+01H],3AH
JB C1
MOV BYTE PTR[SI+01H],30H
INC BYTE PTR[SI]
C1: NOP
ENDM
DELAY MACRO ;delay 1s
MOV AX,0002DH
MOV BX,07FFFH
D1: DEC BX
JNZ D1
MOV BX,07FFFH
DEC AX
JNZ D1
ENDM
DATA SEGMENT
TIME DB 30H,30H,30H,30H,30H,30H
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
STA DB 20 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MLOOP: STIME
DELAY
ADD1S
JMP MLOOP
MOV AX,4C00H
INT 21H
CODE ENDS
END START