1判断某一年是否为闰年.pdf

上传人:蓝**** 文档编号:91003571 上传时间:2023-05-19 格式:PDF 页数:13 大小:412.20KB
返回 下载 相关 举报
1判断某一年是否为闰年.pdf_第1页
第1页 / 共13页
1判断某一年是否为闰年.pdf_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《1判断某一年是否为闰年.pdf》由会员分享,可在线阅读,更多相关《1判断某一年是否为闰年.pdf(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、微机原理课程设计说明书级电气工程及其自动化专业班级题目 判断某一年是否为闰年姓名学号指导教师职称年月日摘要随着科学技术的迅速发展,微机的应用越来越普遍,在此设计中利用 DOS21H 中断类型的 10 号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存入缓冲区。将字符串中的每个字符转换为对应的十进制数值(利用 09这 10 个数的 ASCll 码值比其本身大 30H 的关系),利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。解决本问题的关键是找到判断闰年的方法。判断闰年的规则是:如果某一年能被 4 整除但不能被 100 整除或者该年能被 400 整除,则该年为闰年。判断某年是否

2、为闰年的汇编语言的表达式为:(AX)MOD4EQ0)AND(AX)MOD100NE0)OR(AX)MOD400 EQ 0)关键词:判断闰年 中断 字符串输入输出一、判断某一年是否为闰年的基本原理本设计是根据闰年的计算方法,利用汇编语言编写的一个简单的判断闰年的程序。根据判断闰年规则:如果某年能被4 整除但不能被 100 整除或者该年能被400 整除,则该年为闰年,否则不是闰年。在本程序运行后,只要从键盘输入年份,通过计算后,就能输出该年份是否为闰年的信息。二、设计方案2.1 设计程序流程图开始输入年份年份除以 4是否整除否是年份除以 100否不是闰年是否整除继续?是是闰年继续?是除以 400退

3、出是 否 整退出闰年计算设计程序流程图 2.2 设计说明如图 1 闰年计算程序流程图所示,程序开始运行以后,首先屏幕输出提示语,提示用户输入一个年份。用户输入年份后,程序将输入的字符转换为数值。设计利用乘法的操作,实现字符之间的 10 倍数值转换关系。将年份字符转换成数值后,则进行是否是闰年的判断。首先将年份除以4,若不能整除,则判断为不是闰年,屏幕将输出该年不是闰年的信息,并提示用户是否继续下一个年份的判断,如果用户输入n则表示不需要继续,程序将退出,否则继续下一个年份的判断;若能整除 4,则该年份将继续除以 100,若不能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提示用户是否继续

4、下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断;若能整除100,则该年份将继续除以 400,若能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断;若不能整除 400,则判断为不是闰年,屏幕将输出该年不是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断。三、软件设计3.1 代码段定义:代码段需要定义欲显示的字符串,且字符串以$作为结束标志,还需定义欲输入字符串的缓冲区,缓冲区的第一个字节存放能保存的最大字符数,第二个字节存放实际输入的字符

5、数,用户从键盘输入的字符从第三个字节开始存放,直到用户输入回车键为止。本设计代码段定义如下:DATAS SEGMENT MAXLEN DB 5 ACTLEN DB?YEAR DB 4 DUP(0)YEARALL DW 0 NUM400 DW 400 NUM100 DW 100 NUM4 DW 4 NUMMUL DW 1000,100,10,1 MESSAGE1 DB please input the year,13,10,$MESSAGE2 DB the year is run,13,10,$MESSAGE3 DB the year is ping,13,10,$DATAS ENDS3.2提示

6、语显示:利用 DOS 21H 中断类型 09 号键盘功能调用,在屏幕输出提示用户输入年份的提示。首先,将要显示的字符串放在内存数据区中,本设计提示语显示程序代码如下:MOV AH,09H ;输出MOV DX,OFFSET MESSAGE1INT 21H3.3 字符串输入:利用DOS 21H中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存储缓冲区。首先,应在内存中建立一个输入缓冲区,如inbuffdb 5,?,5 dup(?)。本设计字符串输入程序代码如下:MOV AH,0AH ;字符串输入 LEA DX,MAXLEN INT 21H3.4 数制转换:利用 0-9 这 1

7、0 个数的 ASCII 码值比其本身大 30H 的关系,将字符串中的每个字符转换为对应的十进制数值。本设计数制转换程序代码如下:MOV CX,4 MOV SI,0 MOV DI,0 MOV YEARALL,0 NEXT:MOV AL,YEARSI SUB AL,30H CBW MUL NUMMULDI ADD YEARALL,AX INC SI ADD DI,2 LOOP NEXT3.5 是否为闰年的判断:利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。MOV DX,0 MOV AX,YEARALL DIV NUM4 CMP DX,0 JNZ NOCONTINUE:MOV DX,0

8、MOV AX,YEARALL DIV NUM100 CMP DX,0 JNZ YES MOV DX,0 MOV AX,YEARALL DIV NUM400 CMP DX,0 JZ YES3.6 年份输出显示:利用 DOS 21H 中断类型 09 号键盘功能调用,在屏幕输出提示用户输入年份的提示。本设计年份输出显示程序代码如下:YES:MOV AH,09H MOV DX,OFFSET MESSAGE2 INT 21H JMP DONE NO:MOV AH,09H MOV DX,OFFSET MESSAGE3 INT 21H JMP DONE四、设计源程序DATAS SEGMENT MAXLEN

9、DB 5 ACTLEN DB?YEAR DB 4 DUP(0)YEARALL DW 0 NUM400 DW 400 NUM100 DW 100 NUM4 DW 4 NUMMUL DW 1000,100,10,1 MESSAGE1 DB please input the year,13,10,$MESSAGE2 DB the year is run,13,10,$MESSAGE3 DB the year is ping,13,10,$DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:

10、DATAS,SS:STACKS MAIN PROC FAR START:PUSH DS SUB AX,AX PUSH AX MOV AX,DATAS MOV DS,AX MOV AH,09H ;输出 MOV DX,OFFSET MESSAGE1 INT 21H MOV AH,0AH ;字符串输入 LEA DX,MAXLEN INT 21H MOV CX,4 MOV SI,0 MOV DI,0 MOV YEARALL,0 NEXT:MOV AL,YEARSI SUB AL,30H CBW MUL NUMMULDI ADD YEARALL,AX INC SI ADD DI,2 LOOP NEXT

11、MOV DX,0 MOV AX,YEARALL DIV NUM4 CMP DX,0 JNZ NO CONTINUE:MOV DX,0 MOV AX,YEARALL DIV NUM100 CMP DX,0 JNZ YES MOV DX,0 MOV AX,YEARALL DIV NUM400 CMP DX,0 JZ YES YES:MOV AH,09H MOV DX,OFFSET MESSAGE2 INT 21H JMP DONE NO:MOV AH,09H MOV DX,OFFSET MESSAGE3 INT 21H JMP DONE DONE:MOV AH,4CH INT 21H MAIN E

12、NDP CODES ENDS END START五、结论经过这次课程设计,大大地提高了我的分析解决问题的能力,在这一过程中,我根据课程设计题目所给定的总题要求,独立设计、分析和调试程序,在面对问题时,能够耐心思考,解决了很多问题,从中也学到了很多书面上所没有讲明的问题。在运用汇编语言理论知识去解决问题时,也对以前学过的知识点有更深一层的了解。虽然在设计的过程中遇到了很多问题,但最后通过自己的思考与询问他人,我成功的完成了整体设计要求。经过多次的修改完成了画出了设计流程图。接下来根据流程图完成了程序的编写,程序编完后用了一段时间对程序进行调试。在调试的过程中,遇到了一些问题,刚开始程序并不能很好

13、的运行,经过错误分析与不断修改,最后解决了问题,程序能够正常运行并输出正确的结果。通过本次实验,我对循环语句、分支语句和子程序有了进一步的了解,明确了它们各自的功能及具体的运用情况。在实验中体现出对指令不熟练,因此应该在以后的学习中进一步的学习,编出实现功能更好的,让自己满意的程序来。我通过这次课程设计,深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了自己的学习成果。设计的整个过程,锻炼了我们的思考与运用知识的能力,并且学习到做研究的耐心与专注力,要有一丝不苟的态度,科学不可有半点马虎。这次课程设计,让我学到了很多有用的知识,对我以后的学习有很大的帮助与提高。总之,我在

14、这次课程设计中受益匪浅。六、参考文献1 余春暄.80 x86/Pentium 微机原理及接口技术.北京:机械工程出版社,20082 张荣标.微型计算机原理与接口技术.北京:机械工业出版社,20083 王爽.汇编语言.北京:清华大学出版社,20084 杨季文.80 x86 汇编语言程序设计教程.北京:清华大学出版社,2006设计总结:通过这次课程设计,进一步提高了我的分析问题和解决问题的能力。要理论联系实际,理论搞懂了,不会应用还是无济于事。在设计中,确实遇到了不少困难,但经过仔细查阅相关资料和书籍,寻求同学和老师的帮助,最终解决问题。在此,非常感谢同学和老师的耐心的帮助,祝同学们学习进步,祝老师工作顺利。指导教师评语:课程设计成绩:指导教师签名:年月日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 其他报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com