判断某一年是否为闰年课程设计Word格式.docx
- 文档编号:20539203
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:13
- 大小:64.72KB
判断某一年是否为闰年课程设计Word格式.docx
《判断某一年是否为闰年课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《判断某一年是否为闰年课程设计Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
关键词:
判断闰年中断字符串输入输出
一、判断某一年是否为闰年的基本原理
本设计是根据闰年的计算方法,利用汇编语言编写的一个简单的判断闰年的程序。
根据判断闰年规则:
如果某年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年,否则不是闰年。
在本程序运行后,只要从键盘输入年份,通过计算后,就能输出该年份是否为闰年的信息。
二、设计方案
2.1设计程序流程图
否
是
是
闰年计算设计程序流程图
2.2设计说明
如图1闰年计算程序流程图所示,程序开始运行以后,首先屏幕输出提示语,提示用户输入一个年份。
用户输入年份后,程序将输入的字符转换为数值。
设计利用乘法的操作,实现字符之间的10倍数值转换关系。
将年份字符转换成数值后,则进行是否是闰年的判断。
首先将年份除以4,若不能整除,则判断为不是闰年,屏幕将输出该年不是闰年的信息,并提示用户是否继续下一个年份的判断,如果用户输入‘n’则表示不需要继续,程序将退出,否则继续下一个年份的判断;
若能整除4,则该年份将继续除以100,若不能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断;
若能整除100,则该年份将继续除以400,若能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断;
若不能整除400,则判断为不是闰年,屏幕将输出该年不是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断。
三、软件设计
3.1代码段定义:
代码段需要定义欲显示的字符串,且字符串以‘$’作为结束标志,还需定义欲输入字符串的缓冲区,缓冲区的第一个字节存放能保存的最大字符数,第二个字节存放实际输入的字符数,用户从键盘输入的字符从第三个字节开始存放,直到用户输入回车键为止。
本设计代码段定义如下:
DATASSEGMENT
MAXLENDB5
ACTLENDB?
YEARDB4DUP(0)
YEARALLDW0
NUM400DW400
NUM100DW100
NUM4DW4
NUMMULDW1000,100,10,1
MESSAGE1DB'
pleaseinputtheyear'
13,10,'
$'
MESSAGE2DB'
theyearisrun'
MESSAGE3DB'
theyearisping'
DATASENDS
3.2提示语显示:
利用DOS21H中断类型09号键盘功能调用,在屏幕输出提示用户输入年份的提示。
首先,将要显示的字符串放在内存数据区中,本设计提示语显示程序代码如下:
MOVAH,09H;
输出
MOVDX,OFFSETMESSAGE1
INT21H
3.3字符串输入:
利用DOS21H中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存储缓冲区。
首先,应在内存中建立一个输入缓冲区,如inbuffdb5,?
5dup(?
)。
本设计字符串输入程序代码如下:
MOVAH,0AH;
字符串输入
LEADX,MAXLEN
INT21H
3.4数制转换:
利用0-9这10个数的ASCII码值比其本身大30H的关系,将字符串中的每个字符转换为对应的十进制数值。
本设计数制转换程序代码如下:
MOVCX,4
MOVSI,0
MOVDI,0
MOVYEARALL,0
NEXT:
MOVAL,YEAR[SI]
SUBAL,30H
CBW
MULNUMMUL[DI]
ADDYEARALL,AX
INCSI
ADDDI,2
LOOPNEXT
3.5是否为闰年的判断:
利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。
MOVDX,0
MOVAX,YEARALL
DIVNUM4
CMPDX,0
JNZNO
CONTINUE:
DIVNUM100
JNZYES
DIVNUM400
JZYES
3.6年份输出显示:
本设计年份输出显示程序代码如下:
YES:
MOVAH,09H
MOVDX,OFFSETMESSAGE2
JMPDONE
NO:
MOVAH,09H
MOVDX,OFFSETMESSAGE3
INT21H
JMPDONE
4、设计源程序
STACKSSEGMENT
;
此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
MAINPROCFAR
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATAS
MOVDS,AX
MOVAH,09H;
MOVDX,OFFSETMESSAGE1
MOVCX,4
LOOPNEXT
CONTINUE:
NO:
DONE:
MOVAH,4CH
MAINENDP
CODESENDS
ENDSTART
五、结论
经过这次课程设计,大大地提高了我的分析解决问题的能力,在这一过程中,我根据课程设计题目所给定的总题要求,独立设计、分析和调试程序,在面对问题时,能够耐心思考,解决了很多问题,从中也学到了很多书面上所没有讲明的问题。
在运用汇编语言理论知识去解决问题时,也对以前学过的知识点有更深一层的了解。
虽然在设计的过程中遇到了很多问题,但最后通过自己的思考与询问他人,我成功的完成了整体设计要求。
经过多次的修改完成了画出了设计流程图。
接下来根据流程图完成了程序的编写,程序编完后用了一段时间对程序进行调试。
在调试的过程中,遇到了一些问题,刚开始程序并不能很好的运行,经过错误分析与不断修改,最后解决了问题,程序能够正常运行并输出正确的结果。
通过本次实验,我对循环语句、分支语句和子程序有了进一步的了解,明确了它们各自的功能及具体的运用情况。
在实验中体现出对指令不熟练,因此应该在以后的学习中进一步的学习,编出实现功能更好的,让自己满意的程序来。
我通过这次课程设计,深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了自己的学习成果。
设计的整个过程,锻炼了我们的思考与运用知识的能力,并且学习到做研究的耐心与专注力,要有一丝不苟的态度,科学不可有半点马虎。
这次课程设计,让我学到了很多有用的知识,对我以后的学习有很大的帮助与提高。
总之,我在这次课程设计中受益匪浅。
六、参考文献
[1]余春暄.80x86/Pentium微机原理及接口技术.北京:
机械工程出版社,2008
[2]张荣标.微型计算机原理与接口技术.北京:
机械工业出版社,2008
[3]王爽.汇编语言.北京:
清华大学出版社,2008
[4]杨季文.80x86汇编语言程序设计教程.北京:
清华大学出版社,2006
设计总结:
通过这次课程设计,进一步提高了我的分析问题和解决问题的能力。
要理论联系实际,理论搞懂了,不会应用还是无济于事。
在设计中,确实遇到了不少困难,但经过仔细查阅相关资料和书籍,寻求同学和老师的帮助,最终解决问题。
在此,非常感谢同学和老师的耐心的帮助,祝同学们学习进步,祝老师工作顺利。
指导教师评语:
课程设计成绩:
指导教师签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 判断 某一 是否 闰年 课程设计