微机原理课程设计-判断某一年是否为闰年课程设计.doc_第1页
微机原理课程设计-判断某一年是否为闰年课程设计.doc_第2页
微机原理课程设计-判断某一年是否为闰年课程设计.doc_第3页
微机原理课程设计-判断某一年是否为闰年课程设计.doc_第4页
微机原理课程设计-判断某一年是否为闰年课程设计.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

郑州航空工业管理学院微机原理课程设计说明书 2012 级 电气工程及其自动化 专业 1206972 班级题 目 判断某一年是否为闰年 姓 名 贾新亮 学号 120697211 指导教师 王义琴 职称 教授 二一二 年 十二 月 十二 日摘要随着科学技术的迅速发展,微机的应用越来越普遍,在此设计中利用DOS 21H中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存入缓冲区。将字符串中的每个字符转换为对应的十进制数值(利用09这10个数的ASCll码值比其本身大30H的关系),利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。解决本问题的关键是找到判断闰年的方法。判断闰年的规则是:如果某一年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年。判断某年是否为闰年的汇编语言的表达式为:(AX)MOD 4 EQ 0)AND(AX)MOD 100 NE 0)OR(AX)MOD 400 EQ 0) 关键词:判断闰年 中断 字符串输入输出一、判断某一年是否为闰年的基本原理 本设计是根据闰年的计算方法,利用汇编语言编写的一个简单的判断闰年的程序。根据判断闰年规则:如果某年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年,否则不是闰年。在本程序运行后,只要从键盘输入年份,通过计算后,就能输出该年份是否为闰年的信息。二、设计方案开始2.1设计程序流程图输入年份年份除以4是否整除 否年份除以100 是不是闰年 是否整除继续? 否 是闰年除以400 是 退出继续?是否整除 是 退出 闰年计算设计程序流程图 2.2设计说明 如图1闰年计算程序流程图所示,程序开始运行以后,首先屏幕输出提示语,提示用户输入一个年份。用户输入年份后,程序将输入的字符转换为数值。设计利用乘法的操作,实现字符之间的10倍数值转换关系。将年份字符转换成数值后,则进行是否是闰年的判断。首先将年份除以4,若不能整除,则判断为不是闰年,屏幕将输出该年不是闰年的信息,并提示用户是否继续下一个年份的判断,如果用户输入n则表示不需要继续,程序将退出,否则继续下一个年份的判断;若能整除4,则该年份将继续除以100,若不能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断;若能整除100,则该年份将继续除以400,若能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断;若不能整除400,则判断为不是闰年,屏幕将输出该年不是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断。三、软件设计3.1代码段定义:代码段需要定义欲显示的字符串,且字符串以$作为结束标志,还需定义欲输入字符串的缓冲区,缓冲区的第一个字节存放能保存的最大字符数,第二个字节存放实际输入的字符数,用户从键盘输入的字符从第三个字节开始存放,直到用户输入回车键为止。 本设计代码段定义如下: 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提示语显示:利用DOS 21H中断类型09号键盘功能调用,在屏幕输出提示用户输入年份的提示。首先,将要显示的字符串放在内存数据区中,本设计提示语显示程序代码如下:MOV AH,09H ;输出MOV DX,OFFSET MESSAGE1INT 21H 3.3字符串输入:利用DOS 21H中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存储缓冲区。首先,应在内存中建立一个输入缓冲区,如inbuff db 5,?,5 dup(?)。本设计字符串输入程序代码如下: MOV AH,0AH ;字符串输入 LEA DX,MAXLEN INT 21H3.4数制转换:利用0-9这10个数的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 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 4、 设计源程序 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 ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS: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 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 ENDP CODES ENDS END START五、结论经过这次课程设计,大大地提高了我的分析解决问题的能力,在这一过程中,我根据课程设计题目所给定的总题要求,独立设计、分析和调试程序,在面对问题时,能够耐心思考,解决了很多问题,从中也学到了很多书面上所没有讲明的问题。在运用汇编语言理论知识去解决问题时,也对以前学过的知识点有更深一层的了解。 虽然在设计的过程中遇到了很多问题,但最后通过自己的思考与询问他人,我成功的完成了整体设计要求。经过多次的修改完成了画出了设计流程图。接下来根据流程图完成了程序的编写,程序编完后用了一段时间对程序进行调试。在调试的过程中,遇到了一些问题,刚开始程序并不能很好的运行,经过错误分析与不断修改,最后解决了问题,程序能够正常运行并输出正确的结果。通过本次实验,我对循环语句、分支语句和子程序有了进一步的了解,明确了它们各自的功能及具体的运用情况。在实验中体现出对指令不熟练,因此应该在以后的学习中进一步的学习,编出实现功能更好的,让自己满意的程序来。我通过这次课程设计,深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了自己的学习成果。设计的整个过程,锻炼了我们的思考与运用知识的能力,并且学习到做研究的耐心与专注力,要有一丝不苟的态度,科学不可有半点马虎。这次课程设计,让我学到了很多有用的知识,对我以后的学习有很大的帮助与提高。总之,我在这次课程设计中受益匪浅。 六、参考文献1 余春暄.80x86/Pentium微机原理及接口技术.北京:机械工程出版社,20082 张荣标.微型计算机原理与接口技术.北京:机械工业出版社,20083 王爽.汇编语言.北京:清华大学出版社,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论