电子日历微机课程设计.docx
《电子日历微机课程设计.docx》由会员分享,可在线阅读,更多相关《电子日历微机课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
![电子日历微机课程设计.docx](https://file1.bdocx.com/fileroot1/2022-10/25/3729a073-412b-4e92-b5b4-536b37959f2a/3729a073-412b-4e92-b5b4-536b37959f2a1.gif)
电子日历微机课程设计
stacksegmentstack
dw64dup(?
)
stackends
clearscreenmacro;清屏宏
pushax
pushbx
pushcx
pushdx
movah,6
moval,0
movbh,7;blankline
movcx,0000h;upperleftrow+upperleftcolumn(0,0)
movdx,184fh;lowerrightrow+lowerrightcolum(24,79)
int10h
popdx
popcx
popbx
popax
endm
showlineMACROSTR,STA,LEN,POS,COL;显示字符串宏
PUSHDX
PUSHBX
PUSHAX
MOVBP,OFFSETSTR
ADDBP,STA
MOVDX,POS
MOVCX,LEN
MOVBX,COL
MOVAX,1301H
INT10H
POPAX
POPBX
POPDX
endm
datasegment;数据定义
str1db'TIME'
str2db'DATE'
stringdb'TIMEDATE'
timedb'00:
00:
00'
datedb'0000-00-00'
yeardw0
mouthdb0
daydb0
hourdb0
minutedb0
seconddb0
sbufdb'00'
sbufydb'0000'
flg1db0
flg2db0
flg3db0
dpdb'year'
dataends
codesegment
assumecs:
code,ds:
data
start:
;mainprocfar;主函数
movax,data
movds,ax
MOVes,ax
movah,01h
movcx,2000h
int10h
callgettime;调用系统时间
callgetdate;调用系统日期
function1:
;功能一
movflg1,0
clearscreen
showlinestring,0,9,0a20h,0001h;功能一初始化显示
showlinestr1,0,4,0a20h,0029h
showlinetime,0,8,0b20h,0004h
callshowtimeall
N11:
callshowtime
callgetchar
cmpal,'a'
jneM11
callsettime
M11:
cmpal,'m'
jneM12
jmpfunction2
M12:
cmpal,'q'
jegoesc
jmpN11
function2:
;功能二
movflg1,3
clearscreen
showlinestring,0,9,0a20h,0001h;功能二初始化显示
showlinestr2,0,4,0a25h,0029h
showlinedate,0,10,0b20h,0004h
callshowdateall
N22:
callgetchar
cmpal,'a'
jneN2
callsetdate
N2:
cmpal,'q'
jegoesc
cmpal,'m'
jneN22
cmpal,'m'
jefunction1
goesc:
movah,4ch;退出
int21h
getcharprocnear;得到字符
movah,07h
int21h
ret
getcharendp
gettimeprocnear;得系统时间
movah,2ch
int21h
movhour,ch
movminute,cl
movsecond,dh
ret
gettimeendp
getdateprocnear;得系统日期
movah,2ah
int21h
movyear,cx
movmouth,dh
movday,dl
ret
getdateendp
bcdchprocnear;db==>'00'未储存
movbl,0ah
movah,00h
divbl
addal,30h
addah,30h
ret
bcdchendp
seconddelayprocnear;延时一秒
pushax
pushbx
pushdx
movah,00H
int1aH
adddl,17
movbl,dl
lop1:
movah,00H
int1ah
cmpdl,bl
jnzlop1
popdx
popbx
popax
ret
seconddelayendp
waitfprocnear;61h端口的延时子程序10ms
pushax
movcx,6630
waitf1:
inal,61h
andal,10h
cmpal,ah
jewaitf1
movah,al
loopwaitf1
popax
ret
waitfendp
showtimeproc;时钟程序
loop1:
movah,01h
int16h
jnzloop2
ti1:
callseconddelay;延时一秒
incsecond
moval,second
callshowbuf
showlinesbuf,0,2,0b26H,0004H;秒加
cmpsecond,58
jnaloop1
movsecond,-1
incminute
moval,minute
callshowbuf
showlinesbuf,0,2,0b23H,0004H;分加
cmpminute,58
jnaloop1
movminute,-1
inchour
moval,hour
callshowbuf
showlinesbuf,0,2,0b20H,0004H;小时加
cmphour,23
jnaloop1
movhour,0
incday;日加
cmpday,30
jnaloop1
movday,1
incmouth;月加
cmpmouth,11
jnaloop1
movmouth,1
incyear;年加
jmploop1
loop2:
ret
showtimeendp
settimeprocnear;设置时间flg1=0,1,2分别代表调整时分秒
callmovshu
R1:
callgetchar
cmpal,'i'
jneK11
calladdshu
callshowtimeall
callmovshu
jmpR1
K11:
cmpal,'a'
jnek12
incflg1
cmpflg1,3
jnep1
movflg1,0
p1:
callshowtimeall
callmovshu
jmpR1
k12:
cmpal,'q'
jnek13
jmpgoesc
k13:
cmpal,'m'
jefunction1
jmpR1
ret
settimeendp
setdateprocnear;设置日期flg1=3,4,5分别代表调整年月日
callmovshu
R2:
callgetchar
cmpal,'i'
jneK21
calladdshu
callshowdateall
callmovshu
jmpR2
K21:
cmpal,'a'
jnek22
incflg1
cmpflg1,6
jnep2
movflg1,3
p2:
callshowdateall
callmovshu
jmpR2
k22:
cmpal,'q'
jnek23
jmpgoesc
k23:
cmpal,'m'
jefunction2
jmpR2
ret
setdateendp
addshuproc;根据flg1调整时间日期
cmpflg1,0
jnet1
inchour
cmphour,24
jnet6
movhour,0
t1:
cmpflg1,1
jnet2
incminute
cmpminute,60
jnet6
movminute,0
t2:
cmpflg1,2
jnet3
incsecond
cmpsecond,60
jnet6
movsecond,0
t3:
cmpflg1,3
jnet4
incyear
cmpyear,10000
jnet6
movyear,1
t4:
cmpflg1,4
jnet5
incmouth
cmpmouth,13
jnet6
movmouth,1
t5:
cmpflg1,5
jnet6
incday
cmpday,32
jnet6
movday,1
t6:
ret
addshuendp
movshuproc
cmpflg1,0;根据flg1显示时间日期调整对象
jnett1
moval,hour
callshowbuf
showlinesbuf,0,2,0b20H,000eH
tt1:
cmpflg1,1
jnett2
moval,minute
callshowbuf
showlinesbuf,0,2,0b23H,000eH
tt2:
cmpflg1,2
jnett3
moval,second
callshowbuf
showlinesbuf,0,2,0b26H,000eH
tt3:
cmpflg1,3
jnett4
callyearbcd
showlinesbufy,0,4,0b20H,000eH
tt4:
cmpflg1,4
jnett5
moval,mouth
callshowbuf
showlinesbuf,0,2,0b25H,000eH
tt5:
cmpflg1,5
jnett6
moval,day
callshowbuf