该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
data segment
zhengd db 0ah,0dh
db 0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh
db " @ @@@@@@@@ @ ",0ah,0dh
db " @ @ @ @ @@@@@@@ @@@@@@@@@ ",0ah,0dh
db " @@@@@@@@@ @ @@ @ @ @ ",0ah,0dh
db " @ @ @ @ @ @ @ ",0ah,0dh
db " @@ @ @@@@@@ @@@@@@@ @@ ",0ah,0dh
db " @@ @ @ @ @ @ @ @ @ ",0ah,0dh
db " @@ @ @ @ @ @ @ @@ @ ",0ah,0dh
db " @ @ @ @ @@@@@@@ @ @ ",0ah,0dh
db " @@@ @ @@ @@@ @@ ","$"
ringtime db 0ah,0dh," The Bell is Ringing!!",0ah,0dh
db 0ah,0dh,0ah,0dh
db" @@@ @@@@@ ",0ah,0dh
db" @@@@@@ @@@ @@@@ ",0ah,0dh
db" @@@@@@@@@ @@@ @@@@ ",0ah,0dh
db" @@@@@ @@@@ ",0ah,0dh
db" @@@@@ @@@@ ",0ah,0dh
db" @@@@@ @@@@@ @@@ ",0ah,0dh
db" @@@@@@@@@ @@@ @@@@ ",0ah,0dh
db" @@@@@@@@ @@@ @@@@ ",0ah,0dh
db" @@@@@@@@@ @@@ @@@@ ",0ah,0dh
db" @@@@@@@@@ @@@ @@@@ ",0ah,0dh
db" @@@ @@@@ ",0ah,0dh
db" @@@@@@@@@@@@@@@@@@ ",0ah,0dh
db" @@@@@@@@@@@@@@@@ ","$"
freq DW 371,371,441,495,556,556,556,495
DW 371,371,441,495,556,556,556
DW 371,371,441,495,556,589,556,495
DW 556,441,495,441,416,371
DW 742,556,556,742,556,556,742,556,661,742
DW 661,556,495,441,661,556,-1
time Dw 40,20,20,40,20,20,80,80
Dw 40,20,20,40,20,20,160
Dw 40,20,20,40,20,20,80,80
Dw 40,20,20,40,40,160
Dw 40,20,20,40,20,20,80,40,20,20
Dw 40,20,20,40,40,160
fre1 dw 659,-1
tim1 dw 100 ;整点报时频率
Disptime DB 00,00,":",00,00,":",00,00,"$"
mess db "input ringtime like (HH:MM:SS)",'$'
msg db ' WELCOME TO MY SIMPLE CLOCK! ',0dh,0ah
db 0dh,0ah,0dh,0ah, ' 1. Input r to set ringtime',0dh,0ah
db 0dh,0ah, ' 2. Zhengdian is auto ringing!',0dh,0ah
db 0dh,0ah, ' 3. Please Input ESC to quit ',0dh,0ah,'$'
settime db 9 dup(?)
esckey equ 1bh
sign db 0
data ends
code segment
shuchu macro string
mov ah,09h
lea dx,string
int 21h
endm
clear macro ah1,al1,bh1,ch1,cl1,dh1,dl1
push ax
push bx
push cx
push dx
mov ah,ah1
mov al,al1
mov bh,bh1
mov ch,ch1
mov cl,cl1
mov dh,dh1
mov dl,dl1
int 10h ;清屏宏
pop dx
pop cx
pop bx
pop ax
endm
guang macro dh2,dl2
push ax
push bx
push dx
mov ah,02h
mov bh,0h
mov dh,dh2
mov dl,dl2
int 10h ;光标定位
pop dx
pop bx
pop ax
endm
change macro c1,c2,c3
mov al,c1
cbw
div bh
add al,'0'
mov Disptime[c2],al
add ah,'0'
mov Disptime[c3],ah
endm ;把时间转换成ASCII码以便输出
crlf macro
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
endm ;回车换行宏
assume cs:code,ds:data
main proc
start:mov ax,data
mov ds,ax
mov es,ax ;段初始化
call jiemian
MOV AH,01H
MOV CH,0FFH
INT 10H ; 置光标类型 ,隐藏光标
cld ;串读取顺序设置
next:mov dl,0ffh
mov ah,06h
int 21h ;读键盘字符
cmp al,'r'
je A12 ;比较刚才的输入是否为设置闹铃
cmp al,1bh
je exit1_1 ;退出设置
next1:mov ah,2ch
int 21h ;取系统时间
mov bh,10
cmp cl,0 ;比较分钟
jne f1
cmp dh,0 ;比较秒钟
jne f1
mov cl,ch ;取小时数,以便整点报时
mov ch,0
clear 6,0,79,0,0,24,79
shuchu zhengd
A: call baoshi
call delay12
loop A ;调用整点报时
call jiemian
jmp next ;整点报时结束跳到开始
exit1_1:jmp exit1
f1:jmp A11