微机原理课程设闰年的计算完整版
微机原理课程设计-闰年计算

闰年的判断一,设计内容判断输入的年份是否为闰年,并给出相应的提示信息。
二,设计目的(1)学习分支语句、调用中断和使用逻辑表达设计汇编程序。
(2)熟悉汇编语言程序的编译、链接过程。
三,设计要求从键盘输入年份,通过计算后,输出该年份是否为闰年的信息。
四,设计原理用DOS 21H中断类型的10号功能调用,从键盘输入的是年份数值的字符串按字节存入缓冲区。
将字符串中的每个字符转换为相对应的十进制数值,利用那年是不是为闰年的表达式,输出该年是否为闰年的信息。
判断是否为闰年通常的计算方法:年数能被4整除,即为闰年;但是,被4整除的年份却不一定就是闰年,如1700年、1900年,就不是闰年。
被100整除也可被400整除的为闰年。
如公元2000年是闰年,而公元3000年、5000年不是。
有两种语言可以编写闰年的程序。
如下:1》判断闰年的汇编语言的表达式为:((AX)MOD 4 EQ 0)AND ((AX)MOD 100 NE 0 )OR ((AX)MOD 400 EQ 0)五,软件流程图本程序的流程图如下图所示:图1 程序流程图六,程序如下:DATA SEGMENTINFOM DB 0DH,0AH,'PLEASE INPUT A YEAR: $'Y DB 0DH,0AH,'THIS IS A LEAP YEAR! $'N DB 0DH,0AH,'THIS IS NOT A LEAP YEAR! $'W DW 0BUF DB 8DB ?DB 8 DUP(?)DATA EndsSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODE,ES:DATA START: MOV AX,DATAMOV DS,AXLEA DX,INFOM ;在屏幕上显示提示信息 MOV AH,9 ;调用DOS9号功能INT 21HLEA DX,BUF ;从键盘输入年份字符串MOV AH,10 ;调用DOS9号功能INT 21HMOV CL, [BUF+1] ;取输入年份的实际长度LEA DI,BUF+2 ;DI指向实际的缓冲区起始位置CALL DATACATE ;调用将年份转成ASII字符函数CALL IFYEARS ;调用闰年判断程序JC A1LEA DX,N ;不是闰年,显示提示信息MOV AH,9 ;调用DOS 9号功能,显示不是闰年的提示信息 INT 21HJMP EXIT ;退出A1: LEA DX,Y ;是闰年,显示提示信息MOV AH,9 ;调用DOS 9号功能,显示不是闰年的提示信息 INT 21HEXIT: MOV AH,4CH ;返回DOSINT 21HDATACATE PROC NEAR ;将输入的年份转成ASII字符PUSH CX ;保护CXDEC CX ;CX减一LEA SI,BUF+2 ;SI指向保存转换后数字的空间TT1: INC SI ;读输入年份的实际长度LOOP TT1 ;循环POP CX ;CX出栈MOV DH,30H ;DH=30HMOV BL,10 ;BL=10MOV AX,1 ;AX=1L1: PUSH AX ;保护AXSUB BYTE PTR [SI],DH ;生成ASII字符年份MUL BYTE PTR [SI] ;ASII码按字节向乘ADD W,AX ;W=W+AXPOP AX ;弹出AXMUL BL ;AX=AX*10,生成字符年份DEC SI ;SI=SI-1,字符个数减一LOOP L1 ;循环RETDATACATE ENDPIFYEARS PROC NEAR ;判断是否是闰年PUSH BX ;压栈保护PUSH CXPUSH DXMOV AX,W ;将生成的字符年份进行闰年判断MOV CX,AX ;CX=AXMOV DX,0 ;DX=0MOV BX,4 ;BX=4DIV BX ;对4整除,余数在DX中CMP DX,0 ;判断余数是否为零JNZ LAB1 ;不等于零则跳转到LAB1MOV AX,CX ;AX=CXMOV BX,100 ;BX=100DIV BX ;对100整除,余数在DX中CMP DX,0 ;判断余数是否为零JNZ LAB2 ;不等于零则跳转到LAB2MOV AX,CX ;AX=CXMOV BX,400 ;BX=400DIV BX ;对400整除,余数在DX中CMP DX,0 ;判断余数是否为零JZ LAB2 ;等于零则跳转到LAB2LAB1: CLC ;清进位标志,CF=0JMP LAB3 ;无条件跳转到LAB3LAB2: STC ;置进位标志,CF=1LAB3: POP DX ;出栈POP CXPOP BXRET ;段间返回IFYEARS ENDPCODE ENDSEND START七,调试过程与分析1.调试过程1.建立汇编语言源程序(ASM 文件)(1):调用可执行文件(EXE 文件),进行程序的执行在建立了可执行文件(EXE 文件)后,就可以直接从DOS 下执行程序,如下所示:D:\masm>rui.exe ↙执行后,显示:“Please input a year !”输入“2000” 回车“This is a l eap year!再次运行rui.exe文件,输入“1999”回车“This is not a leap year!”2.实验分析一》从键盘输入年份可以进行闰年的判断,但是不能实现连续判断,必须重新执行程序才能进行判断。
微机-闰年判断程序设计

学号:微机原理及接口技术课程设计题目闰年判断程序设计学院自动化学院专业电气工程及其自动化班级姓名指导教师2015 年12 月18 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目: 闰年判断程序设计初始条件:该程序实现通过键盘输入一年份,然后判断该年份是否为闰年,如果是闰年,则在屏幕上显示:该年是闰年。
如果不是,则显示:该年不是闰年。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图目录摘要 01.设计任务及要求分析 (1)1.1课程设计的目的 (1)1.2闰年判断程序设计 (1)2.方案比较及认证说明 (2)2.1方案比较 (2)2.1.1采用汇编语言设计 (2)2.1.2采用C语言设计 (2)2.2方案论证 (2)3.系统原理阐述 (3)3.1软件思想 (3)3.2程序设计原理 (3)3.3程序设计流程图 (3)3.4汇编源程序 (4)3.4.1主模块程序 (4)3.4.2子模块程序设计 (4)4.调试记录及结果分析 (6)4.1运行界面记录 (6)4.2算法分析 (7)4.3调试过程及结果分析 (7)心得体会 (8)参考文献 (9)附录 (10)摘要本次微机原理与接口技术课程设计是要设计一个判断年份是否为闰年的显示程序。
本次课程设计用的是8086最小系统,在emu8086汇编集成环境下完成。
首先,根据课设题目要求进行分析,并选择适合要求的方案,在选定方案下设计整个设计要求的程序框架,画出流程框图,然后运用模块化的设计思想,将题设要求分成几个小的模块,一段一段的设计程序。
闰年判别任务书

附件2:
课程设计任务书
学生姓名:专业班级:电气1007
指导教师:刘劲松工作单位:自动化学院
题目: 闰年判别汇编语言程序设计
初始条件:
采用16位微处理器 8086 CPU以及86系列微型计算机的指令系统;
软件设计平台为多功能微型计算机实验软件MFS中的微机原理实验集成环境MF2KP。
要求完成的主要任务:
1、设计汇编语言程序,实现判断闰年的功能,具体功能要求如下:
(1)屏幕提示输入具体的年份(4位);
(2)输入完成后单击回车键即输出该年是否为闰年的提示信息;
(3)可连续输入年份进行判断,直至单击“Q”或“q”键退出程序。
2、根据功能要求绘制程序流程图、编写完整的汇编语言程序并上机调试:
3、撰写课程设计说明书。
课程设计说明书的撰写格式如下:
(1)设计说明书包括封面、任务书(指导老师提供)、正文、参考文献(3~5篇)、附录(程序清单,要求有注释)、成绩评定表(指导老师提供)。
(2)说明书正文包含总体方案论证(算法说明);程序流程图设计及其说明;软件设计关键问题或程序段落的说明;程序调试说明、结果记录及分析;课程设计收获及心得体会。
(3)同一选题若为合作完成,设计说明书中需注明本人承担的设计部分。
时间安排:
本次课程设计时间:2013年1月7日-16日
具体时间安排见微机原理课设大纲
指导教师签名:年月日
系主任(或责任教师)签名:年月日。
陈小林_判断闰年

郑州航空工业管理学院微机原理课程设计说明书2010级电气工程及其自动化专业 1 班题目判断某一年是否为闰年姓名陈小林学号100697106指导教师张臻职称讲师二О一0 年十一月二十七日摘要本文是根据闰年的计算方法,利用汇编语言编写的一个简单的判断闰年的程序。
根据判断闰年规则:如果某年能被4整除但不能被100整除或者该年能被400整除,则该年为闰年。
判断某年为闰年的汇编语言表达式为:(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 EQ 0)) OR ((AX) MOD 400 EQ 0)其中,(AX)中存放的是从键盘输入的年份值。
在本程序运行后,只要输入年份就能判断是否为闰年。
此程序可成为万年历的一部分,可深入的进行研究,以便应用到日常生活中。
关键词闰年、存放、字符、判断一、判断一年是否为闰年的基本原理利用DOS 21H 中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存入缓冲区。
将字符串中的每个字符转换为对应的十进制数值(利用0-9这10个数的ASCII码值比其本身大30H的关系),利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。
解决本问题的关键是找到判断某年时否为闰年的方法。
要判别某一年year是否闰年。
闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除;②能被4整除,又能被400整除。
本设计中,我们利用 DOS 21H中断类型的10号键盘功能调用,将从键盘接收的年份数值型字符串按字节存入缓冲区。
将字符串中的每个字符转换为对应的十进制数值(利用0~9这10个数的ASCll码值比其本身大30H的关系),通过判断某年是否为闰年的表达式,判断输出是否为闰年的信息。
二、设计方案判断某年是否为闰年的汇编语言的表达式为:(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 NE 0)) OR((AX) MOD 400 EQ 0)其中,(AX)中存放的是从键盘输入的年份值。
求闰年的编程 分支方法

求闰年的编程分支方法闰年是指公历中,能够被4整除但不能被100整除的年份,或者能够被400整除的年份。
编写一个程序,判断一个给定的年份是否为闰年。
以下是一种分支方法的实现,用于判断闰年:```// 用户输入一个年份let year = parseInt(prompt("请输入一个年份:"));// 使用分支方法判断是否为闰年if (year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)) {console.log(year + "年是闰年。
");} else {console.log(year + "年不是闰年。
");}```在这段代码中,我们首先使用 `parseInt()` 函数从用户获取输入的年份,并将其转换为整数。
然后,我们使用分支方法来判断年份是否为闰年。
首先,我们通过 `year % 4 === 0` 条件判断年份是否能够被4整除。
接下来,使用逻辑运算符 `&&` 来判断是否满足下面两个条件之一:1. `year % 100 !== 0`: 年份不能被100整除(不能被100整除的年份是闰年)。
2. `year % 400 === 0`: 年份能够被400整除(能够被400整除的年份也是闰年)。
如果以上两个条件之一成立,就输出该年份是闰年;否则,输出该年份不是闰年。
请注意,以上代码中的 `console.log()` 函数用于在控制台输出结果。
你可以根据需要将结果显示在网页上或者进行其他操作。
希望以上内容能满足你对“求闰年的编程分支方法”任务名称描述的要求。
如果还有其他问题,请随时提问。
自动判断闰年(微机原理课设)

摘要随着科学技术的飞速发展,计算机在现代科学技术的发展中起着越来越重要的作用。
多媒体技术、计算机网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术、机械设计CAD、金融电子等都离不开计算机,微机原理与接口技术在此应运而生。
本次课程设计是基于微机原理与接口技术的简单应用,运用在微机原理和接口技术课程上所学的汇编语言知识完成闰年的判断。
众所周知,闰年的判断方法是:年份的数值能被4整除而不能被100整除,或者能被400整除。
本课程设计的主的主要任务也是基于这样的算法利用汇编语言来完成闰年的判断。
关键词:微机原理,汇编语言,算法,闰年摘要随着科学技术的飞速发展,计算机在现代科学技术的发展中起着越来越重要的作用。
多媒体技术、计算机网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术、机械设计CAD、金融电子等都离不开计算机,微机原理与接口技术在此应运而生。
本次课程设计是基于微机原理与接口技术的简单应用,运用在微机原理和接口技术课程上所学的汇编语言知识完成闰年的判断。
众所周知,闰年的判断方法是:年份的数值能被4整除而不能被100整除,或者能被400整除。
本课程设计的主的主要任务也是基于这样的算法利用汇编语言来完成闰年的判断。
关键词:微机原理,汇编语言,算法,闰年自动判断闰年1设计内容及要求本次课程的内容是自动判断闰年,要求输入具体的年份后,输出是否为闰年的提示信息,并且可接着输入年份继续判断,同时支持多个年份同时输入,并给出判断结果,按Q或q键退出程序。
由于此程序比较简单,增设输入错误提示功能,当输入的根本就不是年份时,系统就会提示错误并重新输入。
2概要设计2.1系统总体分析判断闰年的具体算法为:如果该年份的数值能被4整除却不能被100整除,或者该年份的数值能被400整除,则该数值代表的年份为闰年。
由于输入的十进制数相当于字符串以ASCII码形式存在输入缓冲区,因此在进行闰年判断时需将其转化为十进制数进行判断。
判断某一年是否为闰年课程设计

郑州航空工业管理学院微机原理课程设计说明书2012级电气工程及其自动化专业 1206972 班级题目判断某一年是否为闰年姓名贾新亮学号120697211指导教师王义琴职称教授二О一二年十二月十二日摘要随着科学技术的迅速发展,微机的应用越来越普遍,在此设计中利用DOS 21H中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存入缓冲区。
将字符串中的每个字符转换为对应的十进制数值(利用0-9这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设计程序流程图否 是否是是闰年计算设计程序流程图2.2设计说明如图1闰年计算程序流程图所示,程序开始运行以后,首先屏幕输出提示语,提示用户输入一个年份。
用户输入年份后,程序将输入的字符转换为数值。
设计利用乘法的操作,实现字符之间的10倍数值转换关系。
将年份字符转换成数值开始 输入年份年份除以4是否整除 年份除以100 是否整除除以400是否整不是闰年是闰年退出退出继续? 继续?后,则进行是否是闰年的判断。
首先将年份除以4,若不能整除,则判断为不是闰年,屏幕将输出该年不是闰年的信息,并提示用户是否继续下一个年份的判断,如果用户输入‘n’则表示不需要继续,程序将退出,否则继续下一个年份的判断;若能整除4,则该年份将继续除以100,若不能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断;若能整除100,则该年份将继续除以400,若能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断;若不能整除400,则判断为不是闰年,屏幕将输出该年不是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一个年份的判断。
详细闰年计算法总结(包括较大的闰年)

详细闰年计算法(包括较大值闰年)1、口诀:四年一闰;百年不闰, 四百年再闰2、计算方法:①除以4,能整除的一般是闰年,不能就是平年②像1900年这种末尾有2个0一般也是平年③像400,800 ,1200,1600,2000年这种能被400整除是闰年3、原因:地球绕太阳旋转一周实际的时间是365日5小时48分46秒.为了方便,我们把平年按365天计算,实际上就少算了5小时48分46秒,每四年就少了23小时15分4秒,也就是说4年就少算了近一天.假定它少了24小时计算,加上1闰年(24小时),多了44分56秒,所以每四年就规定了一个闰年,把这一天加在闰年的二月,以补上少算的时间,也称为"四年一闰".根据上面的叙述,每四年出现一个闰年时,时间并不是整整24小时,所以四年一闰又多算了44分56秒.按这样计算,每一百年就多算了18小时43分20秒,又将近一天.假定它多了24小时计算,减少1闰年(24小时),少了5小时16分40秒,所以,到公元整百年时,这一年不算闰年,以抵消多算的时间,称为"百年不闰".按上面百年不闰的计算,每一百年又少了5小时16分40秒,每四百年就少了21小时6分40秒,差不多又是一天.假定它少了24小时计算,加上1闰年(24小时),多了2小时53分20秒,所以,到公元年份是四百倍数时,这一年又是闰年,称为"四百年又闰".这就是"四年一闰,百年不闰,四百年又闰"的道理.按推2000年是闰年,2100年就不是闰年.同样道理,"四百年又闰"实际上又多了2小时53分20秒,经过八个四百年(3200年),又要多了23小时6分40秒.假定它多了24小时计算,减少1闰年(24小时),少了53分20秒,因此,当公元年份是3200的倍数时,还要减去一闰(也就是说公元3200,6400年,都不是闰年).经过24个3200年,(76800年)又要少了21小时20分,假定它少了24小时计算,加上1闰年(24小时),多了38分40秒,因此,当公元年份是3200的倍数时,还要减去一闰(也就是说公元3200,6400年,都不是闰年).这样,交叉地计算闰年,与公转的实际时间,误差就很微小了.30个76800()多了19小时20分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*******************实践教学*******************兰州理工大学软件职业技术学院2011年春季学期微型计算机原理及应用课程设计题目:闰年计算专业班级:姓名:学号:指导教师:成绩:前言随着计算机技术的飞速发展,计算机改变了世界,也改变了人类的生活。
作为现代科学技术的主流,新世界的大学生,应当站在时代发展的前列,掌握现代科学技术知识,调整自己的知识结构和能力结构,以适应社会发展的要求。
汇编语言是微型计算机原理及应用的基础,微机主机和接口所要实现的功能都要通过汇编语言来实现。
尽管汇编语言程序设计编程效率低,但其运行效率高、速度快。
因此掌握汇编语言是学好微机原理和接口设计的第一步。
本课设就是以闰年计算为题材,让我们掌握汇编语言、微机原理和接口的关系。
中文摘要利用DOS 21H 中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存入缓冲区。
将字符串中的每个字符转换为对应的十进制数值(利用0-9这10个数的ASCII码值比其本身大30H的关系),利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。
本设计是根据闰年的计算方法,利用汇编语言编写的一个简单的判断闰年的程序。
根据判断闰年规则:如果某年能被4整除但不能被100整除或者该年不能被400整除,则改年为闰年,否则不是闰年。
在本程序运行后,要从键盘输入年份,通过计算后,就能输出该年份是否为闰年的信息。
关键字:缓冲区、字符转换、判断闰年前言 (1)中文摘要 (2)目录 (3)内容 (4)一、设计要求及目的 (4)1.设计要求 (4)2.设计目的 (4)二、设计内容 (4)三、设计思路 (4)1.设计思路 (4)2.设计流程图 (5)3.程序说明 (5)四、软件使用说明书 (7)总结 (10)参考文献 (11)致谢 (12)附录 (13)一、设计要求及目的1.设计要求1、从键盘输入年份,通过计算后,输出该年份是否为闰年的信息;2、查阅文献资料,一般在5篇以上;3、完成算法设计和程序设计、调试;4、撰写课程设计说明书;5、做好答辩工作。
2.设计目的1、学习分支、中断和逻辑表达;2、熟悉汇编语言程序的编译、链接过程。
二、设计内容从键盘输入年份,通过计算后,输出该年份是否为闰年的信息。
三、设计思路1.设计思路本设计中,我们利用DOS 21H中断类型的10号键盘功能调用,将从键盘接收的年份数值型字符串按字节存入缓冲区。
将字符串中的每个字符转换为对应的十进制数值(利用0-9这10个数的ASCII码值比其本身大30H的关系),通过判断某年是否为闰年的表达式,半段输出是否为闰年的信息。
判断某年是否为闰年的汇编语言的表达式为:(((AX)MOD 4 EQ 0)AND((AX)MOD 100 NE 0))OR((AX)MOD 400 EQ0)其中,(AX)中存放的是从键盘输入的年份值。
2.设计流程图3.程序说明1、代码段定义:代码段需要定义欲显示的字符串,且字符串以‘$’作为结束标志,还需要定义欲输入字符串的缓冲区,缓冲区的第一个字节存放能保存的最大字符数,第二个字节存放世界输入的字符数,用户从键盘输入的字符从第三个字节开始存放,直到用户输入回车位置。
本设计代码段定义如下:data segmentinfon db 0dh,0ah,'Please input a year:$'Y db 0dh,0ah,'This is a leap year!$'N db 0dh,0ah,'This is mot a leap year!$'w dw 0buf db 8db ?db 8 dup(?)data ends2、提示语显示:利用DOS 21H中断类型09号键盘功能调用,在屏幕输出提示用户输入年份的提示。
首先,将要显示的字符串放在内存数据区中,本设计提示语显示程序代码如下:lea dx,infonmov ah,9int 21h3、字符串输入:利用DOS 21H中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存储缓冲区。
首先,应在内存中建立一个输入缓冲区,如inbuff db 5,?5 dup(?)。
本设计字符串输入程序代码如下:lea dx,bufmov ah,0Ahint 21h4、数制转换:利用0—9这个数的ASCII码值比本身大30H的关系,将字符串中的每个字符转换为对应的十进制数值。
本设计数制转换程序代码如下:tt1:inc siloop tt1pop cxmov dh,30hmov bl,10mov ax,15、是否为闰年的判断:利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。
cmp dx,0jnz lab1mov ax,cxmov bx,100mov dx,0div bxcmp dx,0jnz lab2mov ax,cxmov bx,400div bxcmp dx,0jz lab2四、软件使用说明书在dos环境下运行。
在“D:\masm611\bin>”提示符下输入命令“masm ifyears.asm”后,如图所示:接下来输入“ml ifyears.asm”运行“ifyears.exe”,总结经过这次课程设计,大大地提高了我的分析解决问题的能力。
在这一过程中,我根据课程设计题目所给定的总体要求,独立设计、分析和调试程序,在面对问题时,能够耐心思考,解决了很多问题,从中也学到了很多书本上没有讲明的问题。
在运用汇编语言理论知识去解决问题时,也对以前学过的知识有了更深一层的了解。
虽然在设计的过程中遇到了很多的问题,但最后通过自己的思考与请教他人,我成功的完成了整体设计要求。
经过多次的修改画出了设计流程图。
接下来根据流程图完成了程序的编写,程序编写完成后用了一段时间对程序进行调试。
在调试过程中,遇到了一些问题,刚开始程序并不能很好的运行,经过错误分析,不断的修改,最后解决了问题,程序能够正常运行并输出正确的结果。
在实验中体现出对指令的不熟练,因此以后应该进一步加深对指令的学习,编出实现功能更好的,让自己满意的程序来。
通过本次课程设计,我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了自己的学习成果。
总之,这次课程设计给我们一次应用自己所学知识的机会,使我对微机原理这门课程有了更深层次的理解,让我学到了很多有用的知识,对我以后的学习有很大的帮助与提高。
参考文献1 宋杰,汪志宏,江敏,微机原理与接口技术课程设计,机械工业出版社,2005.42 周明德,微型计算机系统原理及应用习题集、习题解答与实验指导,清华大学出版社,2005.73 张开成,微型计算机原理,西南师范大学出版社,2006.84 沈美明,温冬婵, IBM-PC汇编语言程序设计第2版,清华大学出版社,2006.55 戴梅萼,史嘉权, 微型机原理与技术-习题、实验和综合训练题集,清华大学出版社,2009.4致谢在编写程序的过程中,我们得到了老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢!感谢同学对我的帮助和指点,在课设即将完成之际,我的心情无法平静,从开始进入课题到课设的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意。
附录设计源程序:data segmentinfon db 0dh,0ah,'Please input a year:$'Y db 0dh,0ah,'This is a leap year!$'N db 0dh,0ah,'This is mot a leap year!$'w dw 0buf db 8db ?db 8 dup(?)data endsstack segment stackdb 200 dup(0)stack endscode segmentassume ds:data,ss:stack,cs:code start:mov ax,datamov ds,axlea dx,infonmov ah,9int 21hlea dx,bufmov ah,0Ahint 21hmov cl,buf+1lea di,buf+2call datacatecall ifyearsjc a1lea dx,nmov ah,9int 21hjmp exita1:lea dx,ymov ah,9int 21hexit:mov ah,4chint 21hdatacate proc nearpush cxdec cxlea si,buf+2tt1:inc siloop tt1pop cxmov dh,30hmov bl,10mov ax,1l1:push axsub byte ptr[si],dhmul byte ptr[si]add w,axpop axmul bldec siloop l1retdatacate endpifyears proc nearpush bxpush cxpush dxmov ax,wmov cx,axmov dx,0mov bx,4div bxcmp dx,0jnz lab1mov ax,cxmov bx,100mov dx,0div bxcmp dx,0jnz lab2mov ax,cxmov bx,400div bxcmp dx,0jz lab2lab1:clcjmp lab3lab2:stclab3:pop dxpop cxpop bxretifyears endpcode endsend start注释:字符功能调用类(Character-Oriented Function) 01H、07H和08H —从标准输入设备输入字符02H —字符输出03H —辅助设备的输入04H —辅助设备的输出05H —打印输出06H —控制台输入/输出09H —显示字符串0AH —键盘缓冲输入0BH —检测输入状态0CH —清输入缓冲区的输入功能。