[汇编] 屏幕中间显示数字时钟

时间:2021-03-03 01:05:28

 

 

[汇编] 屏幕中间显示数字时钟 

  1 ;显示系统时间程序
2
3 data segment
4 ; add your data here!
5 hour db '?'
6 minute db '?'
7 second db '?'
8 time db "00:00:00$"
9 temp db '?'
10 now db '?'
11 want db '?'
12 pkey db "press any key...$"
13 ends
14
15 stack segment
16 dw 128 dup(0)
17 ends
18
19 code segment
20 ;---------------------------------------------
21 main proc far
22 call init_register ;初始化
23 SiXunHuan:
24 mov want,1D ;延时3S
25 call delay
26 call setshow
27 call show_time ;显示
28 loop SiXunHuan
29
30 call last_show ;结果
31 ret
32 main endp;
33 ;---------------------------------------------
34 init_register proc near;set segment registers:
35 mov ax, data
36 mov ds, ax
37 mov es, ax
38 ret
39 init_register endp
40 ;---------------------------------------------
41 show_time proc near ;时间子程序
42 mov ah,2Ch
43 int 21h ;获取时间
44 mov hour,ch
45 mov minute,cl
46 mov second,dh
47
48 mov ax,0 ;计算到字符串时间
49 mov al,hour
50 mov temp,10D
51 div temp
52 add al,30H
53 mov time[0],al
54 add ah,30H
55 mov time[1],ah
56
57 mov ax,0
58 mov al,minute
59 mov temp,10D
60 div temp
61 add al,30H
62 mov time[3],al
63 add ah,30H
64 mov time[4],ah
65
66 mov ax,0
67 mov al,second
68 mov temp,10D
69 div temp
70 add al,30H
71 mov time[6],al
72 add ah,30H
73 mov time[7],ah
74
75 lea dx,time ;10中断显示时间
76 mov ah,09H
77 int 21H
78
79 ret
80 show_time endp
81 ;---------------------------------------------
82 last_show proc near ;最后显示东西
83 lea dx, pkey ; output string at ds:dx
84 mov ah, 9
85 int 21h
86
87 ; wait for any key....and end
88 mov ah, 1
89 int 21h
90
91 mov ax, 4c00h ; exit to operating system.
92 int 21h
93 ret
94 last_show endp
95 ;---------------------------------------------
96 delay proc near ;延时函数,放在want为想要延时的秒数
97 mov ah,2Ch
98 int 21h ;获取时间
99 mov now,dh
100
101 mov ax,0
102 mov al,now
103 add al,want
104 mov temp,60D
105 div temp
106 mov want,ah
107 del:
108 mov ah,2Ch
109 int 21h
110 cmp dh,want
111 jz next
112 loop del
113 next:
114 ret
115 delay endp
116 ;---------------------------------------------
117 setshow proc near ;设置光标位置位置
118 mov dh,12 ;row-1
119 mov dl,34 ;columun-1
120 mov bh,0
121 mov ah,2
122 int 10h
123 setshow endp
124 ;---------------------------------------------
125 clear proc near
126 ret
127 clear endp
128 ;---------------------------------------------
129 end code
130 end