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

合集下载

微机原理课程设计-闰年计算

微机原理课程设计-闰年计算

闰年的判断一,设计内容判断输入的年份是否为闰年,并给出相应的提示信息。

二,设计目的(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分。

小学闰年的计算方法

小学闰年的计算方法

小学闰年的计算方法闰年是指在公历中,除能被4整除但不能被100整除的年份,或者能被400整除的年份。

而在小学阶段,学生们也需要学会如何计算闰年。

下面我们就来详细介绍一下小学生可以使用的闰年计算方法。

首先,我们需要知道闰年的定义。

闰年是为了弥补因地球绕太阳运行周期为365.2425天而产生的误差而设立的。

平年只有365天,闰年则多出一天,即366天。

这样,每4年就多出了大约0.25天,4年积累下来就会多出1天,于是在第5年时就需要加上这一天,于是就有了闰年的规定。

其次,小学生可以使用的计算方法是通过除法来判断一个年份是否为闰年。

具体来说,只需要判断这个年份能否被4整除即可。

如果能被4整除,那么这一年就是闰年;如果不能被4整除,那么就不是闰年。

这是因为每隔4年就会多出1天,所以能被4整除的年份就是闰年。

再次,对于能被4整除的年份,还需要进行进一步的判断。

如果这个年份能被100整除但不能被400整除,那么它就不是闰年;如果能被400整除,那么它就是闰年。

这是因为虽然能被4整除的年份都有多出1天的情况,但是能被100整除但不能被400整除的年份并不是闰年。

只有能被400整除的年份才是闰年。

最后,我们需要注意的是,闰年的计算方法虽然简单,但是在日常生活中却有着重要的作用。

比如,闰年的存在就导致了2月份有29天,而平年只有28天。

因此,掌握好闰年的计算方法,对于小学生来说是非常有必要的。

总之,小学生可以通过除法来判断一个年份是否为闰年,而在进行判断时需要注意能否被100整除但不能被400整除的情况。

掌握好闰年的计算方法,不仅可以帮助小学生更好地理解时间的概念,也能够在日常生活中应用到相关知识。

希望本文的介绍能够帮助小学生更好地掌握闰年的计算方法。

闰年的定义和程序计算整理

闰年的定义和程序计算整理

让知识带有温度。

闰年的定义和程序计算整理闰年的定义和程序计算天文专家表示,农历鸡年是个闰年,有一个“闰6月”,共有6个小月,每月29天和7个大月,每月30天,一年共有384天。

定义①、一般年能整除4且不能整除100的为闰年.(如就是闰年,1900年不是闰年)①、世纪年能整除400的是闰年.(如2000年是闰年,1900年不是闰年)①、对于数值很大的年份,这年假如能被3200整除,并且能被172800整除则是闰年.如172800年是闰年,86400年不是闰年(由于虽然能被3200整除,但不能被172800整除)程序计算Ecmascript语言:1234567//推断指定年份是否为闰年functionisleap(){varthe_year=newDate().getFullYear();varisleap=the_yea r%4==0the_year%100!=0||the_year%400==0;returnisleap;} C#语言:123456789///summary///推断指定年份是否为闰年////summary///paramname=year年份/param///returns返回布尔值true为闰年,反之不是/returnspublicstaticboolisLeapYear(intyear){return((year%4==0year%100第1页/共3页千里之行,始于足下。

!=0)||year%400==0);} Java语言:12345678910111213importjava.util.Scanner;publicclassLeapYear{public staticvoidmain(String[]args){ Scannerinput=newScanner(System.in);Syst em.out.print(请输入年份:);intyear=input.nextInt();if((year%4==0year%100!=0)||year%400== 0)System.out.print(year+年是闰年。

数字钟显示与闰年判断程序的设计报告

数字钟显示与闰年判断程序的设计报告

《微机接口技术课程设计》报告题目:数字时钟班级:计算机0903 座号: 8姓名:张振锋指导教师:蔡文培设计题目:1.数字钟显示与闰年判断程序的设计(1)在屏幕上以hh:mm:ss的格式显示时间、并以一定时间间隔随机改变显示位置;(2)闰年判断;(3)通过按键选择进入其中一项功能;(4)按Q或ESC键退出系统;(5)友好的用户界面。

(提示:获取系统时钟、屏幕显示需要使用相关的DOS功能调用和BIOS调用,请查阅相关参考书)2.数字时钟(1)实现24小时走时的时钟,并将时间以HH.MM.SS显示在6位数码管上;(2)可以根据预设的时间闹铃,一定时间后停止;(3)可通过按键修改时间;(4)在8088系统总线的基础上,根据给定的要求设计出接口电路原理图;(5)在微机接口实验台上模拟调试实现。

设计目的:1.加深对课程理论知识的理解;2.通过编写一定规模和难度的程序,进行一次较全面的汇编编程训练,提高分析问题和解决问题的能力;提高调试程序的能力。

3.熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,作为微机开发应用方面的初步训练。

设计内容:数字钟显示与闰年判断程序的设计主要利用计算机本身的的编程,无需用到硬件的链接。

实现界面显示,键盘输入选择,根据不同的选择运行不同的功能。

本系统有两个功能:1,产生新的界面,实现数字时钟的显示,一定时间间隔随机改变显示位置。

2,根据输入的年份判断是否是闰年,esc键退出。

下面是总体流程图:时间显示:闰年判断:数字时钟利用8253A ,用实验箱上的数码管模拟一个时钟,要求具有时钟的功能;能显示实时时间,时间值的变化可采用查询8253A 的计数器值来进行计算;按“k0”键时,进入时钟设置状态,再按“k0”键进入闹钟设置状态,按“k1”键时进行分钟加1,按‘k2‘键进行小时加1。

时间在数码管上显示;显示实时时间(从12时34分56秒开始)。

下图为各模块的组合框图:本系统主要利用对计数器/定时器多功能接口芯片8253装初值,产生 1秒信号,并送给可编程并行通信接口芯片8255作为加1信号,再通过按键和8255控制LED 模块显示。

微机原理课程设计万年历

微机原理课程设计万年历

微机原理课程设计万年历的制作目录实验目的 (3)实验内容 (3)实验流程图 (3)实验程序 (5)调试结果 (11)心得体会 (14)实验目的:结合微型计算机原理课程的学习,进一步巩固已学习的知识,同时针对微型计算机原理知识的具体应用,学会对系统中的DOS和BIOS的使用。

学会使用编写软件EDIT,弄懂汇编程序的上机过程以与如何运用DEBUG软件进行汇编程序的调试。

通过单步调试,加深对汇编语言的内容了解。

实验内容:接受年月日信息并显示,编写程序,先显示“What is the data?”,并响铃一次,然后再显示year,接收键盘输入的年,输入正确后,显示month,从键盘输入月,输入正确后,再显示day,从键盘输入日期的信息,并显示。

对于时间的算法,闰年时,二月有29天,而平年,二月有28天,其它月份有30天或是31天。

若输入年月日时产生错误,警告并重新输入。

实验流程图:子程序getnum流程图:实验程序:assume cs:code,ds:datadata segmentcr equ 0dhlf equ 0ahstring1 db 'What is the data?','$'string2 db cr,lf,'Year :','$'string3 db cr,lf,'Month :','$'string4 db cr,lf,'Day :','$'string5 db cr,lf,'ERROR! Input again:','$' buff1 db 5db ?db 5 dup(?)buff2 db 3db ?db 3 dup(?)buff3 db 3db ?db 3 dup(?)data endscode segmentstart:mov ax,datamov dx,offset string1 mov ah,9int 21hcall delaycall warningcall delaycall getnummov dl,0dhmov ah,02hint 21hmov dl,0ahmov ah,02hint 21hcall dispyearmov dl,'-'mov ah,02hint 21hcall dispmonthmov dl,'-'mov ah,02hint 21hmov ax,4c00hint 21hgetnum proc nearrepea0:mov dx,offset string2mov ah,9int 21hmov dx,offset buff1mov ah,0ahint 21hmov cx,4mov si,offset buff1inc sicheck:inc simov al,[si]sub al,30hmov ah,0hcmp ax,9hja repeacmp ax,0hjb repealoop checkmov si,offset buff1mov ah,'$'mov [si+6],ahjmp repeat0repea:call errorcall warningjmp repea0repeat0:mov dx,offset string3mov ah,9int 21hmov dx,offset buff2mov ah,0ahint 21hmov si,offset buff2call addresscmp al,0dhjz repeat01cmp ax,12hja repeat01cmp ax,0jbe repeat01mov si,offset buff2mov [si+4],ahjmp repeat1repeat01:call errorcall warningjmp repeat0repeat1:mov dx,offset string4mov ah,9int 21hmov dx,offset buff3mov ah,0ahint 21hmov si,offset buff3call addresscmp ax,31hja repeat11cmp ax,0jbe repeat11mov si,offset buff2call addresscmp ax,2hjz febdiv dlcmp ah,0hjz doumonthmov si,offset buff2call addresscmp ax,8hja downmonth1jmp over doumonth:mov si,offset buff2call addresscmp ax,7hja downmonth2mov si,offset buff3call addresscmp ax,31hjz repeat11jmp over downmonth2:jmp over repeat11:call errorcall warningjmp repeat1downmonth1:mov si,offset buff3call addresscmp ax,31hjz repeat11jmp overfeb:mov si,offset buff1inc siinc simov dx,[si]sub dh,30hsub dl,30hmov cl,4rol dl,cladd dl,dhmov dh,0mov cl,8rol dx,clcall addresscmp ax,0jz hundardadd ax,dxmov bl,alnextdiv:mov al,ahmov ah,0mov cl,4div cladd ah,2cmp ah,3ja nextdivmov al,bladd al,2div clcmp ah,0hjz leapyear commonyear:mov si,offset buff3call addresscmp ax,28hja repeat11cmp ax,0jbe repeat11jmp overleapyear:mov si,offset buff3call addresscmp ax,29hja repeat11cmp ax,0jbe repeat11jmp over hundard:mov al,dhmov ah,0add ax,2mov dl,4div dlcmp ah,0hjz leapyearjmp commonyear over:mov si,offset buff3mov ah,'$'mov [si+4],ahretgetnum endpdispyear proc nearmov dx,offset buff1inc dxinc dxmov ah,9int 21hretdispyear endpdispmonth proc nearmov dx,offset buff2inc dxinc dxmov ah,9int 21hretdispmonth endpdispday proc nearmov dx,offset buff3inc dxinc dxmov ah,9int 21hretdispday endpaddress proc nearinc siinc simov ax,[si]sub ah,30hsub al,30hmov cl,4rol al,cladd al,ahmov ah,0retaddress endpdelay proc nearpush axpush dxmov dx,5020h ;近1秒mov ax,0s1:sub ax,1sbb dx,0cmp ax,0jne s1cmp dx,0jne s1pop dxpop axretdelay endperror proc nearpush dxpush axmov dx,offset string5mov ah,9int 21hpop axpop dxreterror endpwarning proc nearpush dxpush axmov dl,07hmov ah,2int 21hpop axpop dxretwarning endpcode ends end start调试结果:响铃前:响铃后:输入实例:输入错误信息:心得体会:通过短短几天的课程设计,让我重新拿起已经学习的微机原理理论知识。

巧算平年和闰年微课

巧算平年和闰年微课

1900年 (平年) 19÷4=4……3 有余数,平年
2010年 2012年 2000年
( 平年) ( 闰年) ( 闰年)
10÷4=2……2 有余数,平年 12÷4=3 整除,闰年 20÷4=5 整除,闰年
答题时请暂停一下视频,做完后再点播放!
‘‘
你都答对了吗?
‘‘
—— 再见 ——
制作:邹文东 录制:邹文东
平年
‘‘ 必须要笔算,而且一位数除4位数以 及年份来除以400,很多同学还不熟 练,因此而产生害怕的心理。
‘‘
整百数
取前两位
(如2000年
2000)




不是整百数
(如2015年
取后两位 2015)
整除
闰年
有余数
平年
‘‘
只需口算或简单计算,就可以快速判 断所求年份是平年还是闰年。
‘‘
判断2000年,2015年分别是平年还是闰年? 具体操作:
不是整百数整除有余数闰年平年取前两位取后两位如2000年2000如2015年2015只需口算或简单计算就可以快速判断所求年份是平年还是闰年
姓名:邹文东 网名:诚心 qq : 42154802
人教版三年级下册
整除
闰年
整百数

(如:1900年,2000年) 有余数断年份整除平年 闰年
不是整百数 (如:1980年,2015年) 有余数
2000
整除,是闰年
2015
有余数,是平年
‘‘1.不管年份百位和千位是几,几百或几千都是4的
倍数,所以计算年份除以4是否有余数,只要看后 两位数除以4就可以了。 2.当年份是整百数时,根据被除数和除数同时缩 小100倍,商不变的性质,所以计算年份除以4是 否有余数,只要看前两位数除以4就可以了。

微机课设基于汇编语言的闰年判断程序设计

微机课设基于汇编语言的闰年判断程序设计

西安建筑科技大学华清学院课程设计(论文)课程名称:微型计算机原理与接口技术题目:基于汇编语言的闰年判断程序设计院(系):华清学院机电系专业班级:电子信息与科学技术0801姓名:XXX学号:1234567指导教师:XXX2011 年 1 月 12 日目录引言 (2)一设计任务 (3)1.1设计任务 (3)1.2设计目的 (3)二设计方案 (3)2.1设计分析 (3)2.2结构概述 (3)三软件编程 (5)四程序运行 (10)五收获与心得体会 (11)5.1设计收获 (11)5.2心得体会 (12)参考书目 (12)引言为了实际提高汇编语言的熟练程度,巩固课堂知识,本次课程设计中,我们将结合实际生活中常常遇到的闰年问题,运用MF2KI软件来编写如何判断闰年的程序。

为了实现对输入年份是否为闰年的判断,所设计的程序需要完成的功能主要有:1、在屏幕上显示提示信息,输入年份;2、判断输入格式是否正确;3、判断输入的年份是否为闰年。

判断某年为闰年的汇编语言表达式为:(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 EQ 0)) OR ((AX) MOD 400 EQ 0)其中,(AX)中存放的是从键盘输入的年份值。

程序编写完成之后,会经过编译、连接、调试等过程,程序运行后,屏幕会提示输入年份,输入后程序会自动判断输入的年份是否为闰年。

一、设计任务1.1设计任务根据提示输入任意年份,编写判断闰年的程序,如果是闰年则在屏幕上现实“Y”,否则现实“N”。

1.2设计目的1、学习分支、中断和逻辑表达,寄存器的运用和子程序的调用;2、熟悉汇编语言程序的编译、运行过程;3、了解汇编语言编写的各个流程4、将课堂上所学的知识学以致用,通过程序的制作过程学习课外的新知识,并加强加深对旧知识的理解与掌握。

二、设计方案2.1 设计分析闰年的判断是一个非常经典的问题,在学习各种语言时都会遇到。

解决该问题的关键是找到判断某年是否为闰年的方法。

第二章 课程设计二

第二章 课程设计二

第二章课程设计二一、设计题目读入一个年份,判断该年份是闰年吗?二、设计思路闰年的判断方法:该年份能够被4整除但不能被100整除,或者该年份能够被400整除,则是闰年。

输入:以十进制的形式读入要判断的年份,从键盘取得的一个十进制数转换为二进制数存入BX寄存器中,再将BX中的内容保存在变量year中。

判断:首先将year中的内容首先除以4,不能被4整除,则一定不是闰年,能被4整除的,需再将year中的内容除以100,不能被100整除的,则一定是闰年,能被100整除的,需再将year中的内容除以400,能被400整除的,则是闰年,不能被400整除的,则不是闰年。

输出:经判断后,是闰年的输出“This is a leap year!”,不是闰年的则输出“This is not a leap year! ”,然后输出是否要继续判断另一年份是否是闰年的提示字符串“Continue jugding(y/n)?”,输入‘y’,则输入要判断的年份,输入其它字符则结束程序。

三、程序说明1、程序名称:leap2、程序功能:该程序实现从键盘读入一年份(以十进制的形式读入),然后判断是否是闰年,是则输出“This is a leap year!”,不是则输出“This isnot a leap year!”,接着输出“Continue jugding(y/n)?”,输入‘y’,则输入要判断的年份,输入其它字符则结束程序。

3、寄存器使用情况:在输入部分:AX 用于存放输入的数字BX 存放从键盘输入的年份CX 存放10d用做乘数在判断部分:AX 存放输入的年份,作被除数的低位DX 用作被除数的高位部分或用作保存商SI 用于存放判断是否是闰年的除数在输出部分:DX 用于存放提示字符串的始址AH 用于调用1号和9号功能时用4、流程图图2 程序leap的流程图四、程序清单data segment ;定义数据段mess1 db 0dh,0ah,'Please input a year: $' ;定义提示字符串mess2 db 0dh,0ah,0dh,0ah,'Continue jugding(y/n)? $'year dw ? ;定义字变量yearleap db 0dh,0ah,'This is a leap year! $' ;定义提示字符串nleap db 0dh,0ah,'This is not a leap year! $'data endsstack segment para stack 'stack' ;定义堆栈段开始dw 200 dup(0) ;堆栈大小为200个字stack endscode segment ;定义代码段开始assume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,ax ;数据段段始址送DSmov ax,stackmov ss,ax ;堆栈段段始址送SSmov sp,100 ;给堆栈指针寄存器SP赋值input: ;输入要判断的年份lea dx,mess1 ;在屏幕上显示提示信息mov ah,09hint 21h;以十进制形式读入年份mov bx,0 ;bx用于存放输入的十进制数年份,初始值为0 newchar:mov ah,01h ;键盘输入int 21hcmp al,0dh ;输入回车符时je store ;将输入的年份存入yearsub al,30hcbw ;字节扩展到字xchg ax,bx ;将ax的内容与bx的内容交换mov cx,10d ;将输入的数转化成十进制的数mul cxxchg ax,bxadd bx,ax ;将从键盘读入的十进制数存入bxjmp newcharstore:mov year,bx ;将bx中的内容送变量year;以下程序段用于判断是否是闰年mov ax,year ;将变量year的内容送axmov dx,0 ;将0送寄存器dxmov si,4div si ;(dx,ax)的内容除以4cmp dx,0 ;能被4整除则看能被100整除吗jnz output1 ;不能被4整除,则转向output1mov ax,yearmov si,100div si ;(dx,ax)的内容除以100cmp dx,0 ;能被4整除不能被100整除,则转向output2jnz output2mov ax,yearmov si,400div si ;(dx,ax)的内容除以400cmp dx,0 ;能被400整除的,则转向output2jz output2output1: ;输出字符串"不是闰年"lea dx,nleapmov ah,09hint 21hjmp continue ;跳转到continueoutput2: ;输出字符串"是闰年"lea dx,leapmov ah,09hint 21hcontinue: ;输出提示字符串"是否要继续判断闰年"lea dx,mess2mov ah,09hint 21hmov ah,01h ;从键盘输入一字符int 21hcmp al,'y' ;输入为'y'则输入下一个要判断的年份je inputmov ah,4ch ;结束程序int 21hcode ends ;代码段定义结束end start ;整个程序到此为止,运行时从START处开始五、运行结果1、在编辑源程序之后,用汇编程序MSAM.EXE进行汇编(格式为masm leap;),然后用链接程序LINK.EXE进行链接(格式为link leap;),最后运行程序(格式为leap)。

汇编 判断闰年 课程设计报告

汇编 判断闰年 课程设计报告

课程设计说明书题目: 判断闰年院系:计算机科学与工程学院专业班级:学号:学生姓名:指导教师:2010 年 12 月 30 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室2010年 12月 17 日安徽理工大学课程设计(论文)成绩评定表摘要本程序是用汇编语言编写的简单的判断闰年的小程序。

在运行后,屏幕会提示输入年份,输入后程序会自动判断输入的年份是否为闰年。

判断某年为闰年的汇编语言表达式为:(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 EQ 0)) OR ((AX) MOD 400 EQ 0)其中,(AX)中存放的是从键盘输入的年份值。

在本程序运行后,只要输入年份就能判断是否为闰年。

完成的主要功能1、在屏幕上显示提示信息,输入年份。

2、判断输入的年份是否为闰年。

3、判断完后返回。

关键词:AX,BUF,CALL,DATACATE,IFYEARS目录1设计目的 (1)2概要设计 (2)2.1 系统总体分析 (2)2.2 主模块框图及说明 (2)3 详细设计 (3)3.1 主模块及子模块说明 (3)3.2 各模块详细设计 (3)4.程序调试 (7)4.1 运行界面分析 (7)4.2 算法的分析 (7)4.3 调试过程及分析 (8)5心得体会 (9)5.1 设计体会 (9)5.2 系统改进 (9)参考文献 (10)1设计目的本次课程设计是关于判断闰年的程序,既输入具体的年份,输出本年是否为闰年的提示信息,然后退出此程序。

本次课程设计的目的主要是将课堂上所学的知识学以致用,通过程序的制作过程学习课外的新知识,并加强加深对旧知识的理解与掌握。

2.1 系统总体分析总体设计思想本程序是用汇编语言编写的简单的判断闰年的小程序。

在运行后,屏幕会提示输入年份,输入后程序会自动判断输入的年份是否为闰年。

判断某年为闰年的汇编语言表达式为:(((AX) MOD 4 EQ 0) AND ((AX) MOD 100 EQ 0)) OR ((AX) MOD 400 EQ 0)其中,(AX)中存放的是从键盘输入的年份值。

你知道闰年怎么计算吗?掌握这两种方法,轻松搞定

你知道闰年怎么计算吗?掌握这两种方法,轻松搞定

你知道闰年怎么计算吗?掌握这两种方法,轻松搞定说起闰年,估计一些朋友会很糊涂。

好像隔个一两年就有闰年,结果闰来闰去,闰得头都快大了。

到底什么是闰年?闰年该怎么计算呢?实际上,闰年是公历的一个计算方式,也就是常说的阳历,或者叫西历也可以。

在我国的传统历法农历中,也就是常说的阴历,其实是没有闰年的,只有闰月。

不过现在大多时候,我们把农历的闰月,也称之为闰年。

那么,公历和农历该怎么计算闰年呢?概括起来有3种方法,是分别用来计算公历和农历闰年的。

整除法这是公历闰年的计算方法,具体就是用年数,去除以4,如果得到的是整数,那这一年就是闰年。

比如公元1992年,除以4以后是498,所以公元1992年就是闰年。

怎么闰呢?就是在二月多加一天,成了29天。

需要注意的是,这个计算方法,当遇到年数是100的整数倍时,及必须去除以400,如果得到的是整数的话,这就是世纪闰年;如果不是整数,就不是闰年。

比如公元1600年,是100的整数倍,除以400以后是4,所以公元1600年也是闰年。

置闰法具体就是“三年一闰,五年两闰,十九年七闰”。

这是农历独有的闰年计算方法,每三年设置一个闰月,五年设置两个闰月,十九年设置七个闰月。

如此不断循环。

古人为什么搞这么复杂,而且还不规律的计算方法呢?古人这样做,其实是为了让农历,更加实用。

因此他们把阳历和阴历合在一起,并创造性的发明了24节气。

只不过,24节气和阳历是一致的,就是把太阳沿黄道运行一周的时间,计算为一年。

然后根据太阳的运行规律,把黄道面分成24个节点,用来代表24节气。

而阴历则是把月亮绕地球一圈的时间,计算为一个月,一年为12个月。

我们知道,地球绕太阳一圈的时间为365.25天。

而月亮绕地球一圈的时间为29.5306天,再乘以12,也就是354.3672天。

照这样算下来,一年就相差11天左右,三年就相差33天左右。

这个问题怎么解决呢?古人想到了设置闰月。

怎么设置闰月呢?就是在农历中,当这个月的中气,出现在月末时,必然会导致下一个月只有节令没有中气,而中气出现在下下个月的月初。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 —清输入缓冲区的输入功能。

相关文档
最新文档