- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
星期判别参考源程序星期判别参考源程序
闰年判断主要代码Getrightday proc near ;此子程序用来判断年份是否为闰年push bx ;保存寄存器状态push cxpush dxmov si,offset wmov ax,Yearmov cx,ax ;把转换后的年份的数值存入cx
mov dx,0 ;计算年份是否为4的整数倍mov bx,4div bxmov b,dx ;把此刻的余数赋给b,便于后面天数计算cmp dx,0jnz lab1 ;不能被4整除,不为闰年
mov ax,cx ;接着判断年份是否为100的倍数mov bx,100div bxmov cc,dx ;把此刻的余数赋给cc,便于后面天数计算cmp dx,0jnz lab2 ;不为100的倍数,则为闰年
mov ax,cx ;再判断是否为400的倍数mov bx,400div bxmov d,dx ;把此刻的余数赋给d,便于后面天数计算cmp dx,0jz lab2 ;为400的倍数,则为闰年闰年判断流程图
蔡勒(Zeller)公式主要代码dec yearmov ax,yearmov cx,ax ;year自减1再存入cx
mov dx,0mov bl,4div bxadd cx,ax ;把[Y-1]/4的商加入cx
xor ax,axxor bx,bxmov ax,yearmov dx,0mov bl,100div bxsub cx,ax ;用cx中的值减去[Y-1]/100的商xor ax,axxor bx,bxxor dx,dxmov ax,yearmov bx,400div bxadd cx,ax ;把[Y-1]/400的商加入cx
xor ax,axmov dx,0mov bx,0inc monthmov al,monthmov bl,13mul bl ;月加1后乘以13
xor bx,bxmov bl,5div bxadd cx,ax ;把上面得到的月除以5取整加入cx
蔡勒(Zeller)公式运用流程图
说明: 是只把前面得出的结果赋值给后者
a的值和星期的对应关系a的值 0 1 2 3 4 5 6星期 星期日 星期一 星期二 星期三 星期四 星期五 星期六
五、程序源代码
stack SEGMENT stackDB 200 DUP(0)stack ENDSdata segmentYear dw 0Month db 0Day db 0temp db 10 dup(0)count dw ?ErrMsg db 0dh,0ah,Input wrong!please input again!, $str1 db 0dh,0ah,please input year month day:0dh,0ah,$str2 db 0dh,0ah,Whether or not to continue inquiries Yes/No,0dh,0ah,$
weekstr0 db Today is Sunday,$weekstr1 db Today is Monday,$weekstr2 db Today is Tuesday,$weekstr3 db Today is Wednesday,$weekstr4 db Today is Thursday,$weekstr5 db Today is Friday,$weekstr6 db Today is Saturday,$a dw ?b???????? dw ?cc dw ?d dw ?w db ?data ends ;定义了变量和信息
code segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,ax
lea dx,str1 ;提醒你输入年月日mov ah,9hint 21h ;显示字符串
call GetYearMonthDay ;调用子程序输入正确的年月日call display ;调用子程序通过计算得出星期sel: lea dx,str2 ;提醒你选择退出程序还是继续mov ah,9hint 21hmov ah,1 ;输入你的选择(键盘输入并回显)int 21hcmp al,Yje startcmp al,y ;输入y或Y继续程序je startcmp al,Nje exitcmp al,n ;输入n或N退出程序je exitjmp selexit:mov ah,4chint 21h ;退出
;******************************************
文档评论(0)