电子日历时钟系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子日历时钟系统
stack segment stack
dw64 dup(?)
stack ends
clearscreen macro ;清屏宏
push ax
push bx
push cx
push dx
mov ah,6
mov al,0 ;清屏
mov bh,7 ;填充字符属性
mov cx,0000h ;左上角坐标 (0,0)
mov dx,184fh ;上卷窗口右下角坐标 (24,79)
int 10h
pop dx
pop cx
pop bx
pop ax
endm
showline MACRO STR,STA,LEN,POS,COL ;显示字符串宏
PUSH DX
PUSH BX
PUSH AX
MOV BP,OFFSET STR
ADD BP,STA
MOV DX,POS
MOV CX,LEN
MOV BX,COL
MOV AX,1301H
INT 10H
POP AX
POP BX
POP DX
endm
data segment;数据定义
str1 db'TIME'
str2 db'DATE'
str3 db'METER'
str41 db'BEEP OFF'
str42 db'BEEP ON '
string db'TIME DATE METER BEEP OFF'
time db'00:00:00';定义相关时间。日期,闹钟,秒表的格式
date db'0000-00-00'
meter db'00:00:00:00'
beep db'00:00:00'
year dw 0 ;日期定义
mouth db 0
day db 0
hour db 0 ;时间定义
minute db 0
second db 0
mhour db 0 ;秒表定义
mminute db 0
msecond db 0
mmilise db 0
hours db 0 ;闹钟定义
minutes db 0
seconds db 0
sbuf db'00'
sbufy db'0000'
flg1 db 0 ;定义标志位用于实现跳转
flg2 db 0
flg3 db 0
mess1 db'off$';定义闹钟的开关
mess2 db'on $'
data ends
code segment
assume cs:code, ds:data
main proc far ;主函数段间调用
mov ax, data
mov ds, ax
mov es, ax
mov ah,01h
mov cx,2000h
int 10h
main endp
function1: ;功能一
mov flg1,0
clearscreen
showline string,0,24,0a20h,0001h ;功能一初始化显示 showline str1,0,4,0a20h,0029h
showline time,0,8,0b20h,0004h
call gettime ;调用系统时间
call showtimeall
N11: call showtime
call getchar
cmp al, 'a'
jne M11
call settime
M11: cmp al, 'm'
jne M12
jmp function2
M12: cmp al, 'q'
je quit
jmp N11
function2: ;功能二
mov flg1,3
clearscreen
showline string,0,24,0a20h,0001h ;功能二初始化显示 showline str2,0,4,0a25h,0029h
showline date,0,10,0b20h,0004h
call getdate ;调用系统日期
call showdateall
N22: call getchar
cmp al, 'a'
jne N2
call setdate
N2: cmp al, 'q'
je quit
cmp al, 'm'
jne N22
jmp function3
function3: ;功能三
clearscreen
showline string,0,24,0a20h,0001h ;功能三初始化显示 showline str3,0,5,0a2ah,0029h
showline meter,0,11,0b20H,0004H
N33:
mov mhour,0
mov mminute,0
mov msecond,0
mov mmilise, 0
Kt: call getchar
cmp al, 'a'
jne M31
call resetmeter