1、 微机原理课程设计说明书 2012 级 电气工程及其自动化 专业 1206972 班级 题 目 判断某一年是否为闰年 二一二 年 十二 月 十二 日 摘要 随着科学技术的迅速发展,微机的应用越来越普遍,在此设计中利用 DOS 21H 中断类型的 10 号键盘功能调用,将从键盘接收的表示年份数值的字符串按 字节存入缓冲区。将字符串中的每个字符转换为对应的十进制数值(利用 09 这 10 个数的 ASCll 码值比其本身大 30H 的关系) ,利用判断某年是否为闰年的 表达式,输出该年是否为闰年的信息。 解决本问题的关键是找到判断闰年的方法。判断闰年的规则是:如果某一年 能被 4 整除但不能被 1
2、00 整除或者该年能被 400 整除,则该年为闰年。 判断某年是否为闰年的汇编语言的表达式为: (AX)MOD 4 EQ 0)AND(AX) MOD 100 NE 0)OR(AX) MOD 400 EQ 0) 关键词:判断闰年 中断 字符串输入输出 一、判断某一年是否为闰年的基本原理 本设计是根据闰年的计算方法,利用汇编语言编写的一个简单的判断闰年的 程序。根据判断闰年规则:如果某年能被 4 整除但不能被 100 整除或者该年能被 400 整除,则该年为闰年,否则不是闰年。在本程序运行后,只要从键盘输入年 份,通过计算后,就能输出该年份是否为闰年的信息。 二、设计方案 2.1 设计程序流程图
3、否 是 否 是 是 闰年计算设计程序流程图 2.2 设计说明 如图 1 闰年计算程序流程图所示, 程序开始运行以后, 首先屏幕输出提示语, 提示用户输入一个年份。用户输入年份后,程序将输入的字符转换为数值。设计 利用乘法的操作,实现字符之间的 10 倍数值转换关系。将年份字符转换成数值 开始 输入年份 年份除以 4 是否整除 年份除以 100 是否整除 除以 400 是 否 整 不是闰年 是闰年 退出 退出 继续? 继续? 后,则进行是否是闰年的判断。首先将年份除以 4,若不能整除,则判断为不是 闰年, 屏幕将输出该年不是闰年的信息, 并提示用户是否继续下一个年份的判断, 如果用户输入n则表示
4、不需要继续,程序将退出,否则继续下一个年份的判 断;若能整除 4,则该年份将继续除以 100,若不能整除,则判断为是闰年,屏 幕将输出该年是闰年的信息,并提示用户是否继续下一个年份的判断,若不需要 继续,程序将退出,否则继续下一个年份的判断;若能整除 100,则该年份将继 续除以 400,若能整除,则判断为是闰年,屏幕将输出该年是闰年的信息,并提 示用户是否继续下一个年份的判断,若不需要继续,程序将退出,否则继续下一 个年份的判断;若不能整除 400,则判断为不是闰年,屏幕将输出该年不是闰年 的信息,并提示用户是否继续下一个年份的判断,若不需要继续,程序将退出, 否则继续下一个年份的判断。 三
5、、软件设计 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
6、 the year,13,10,$ MESSAGE2 DB the year is run,13,10,$ MESSAGE3 DB the year is ping,13,10,$ DATAS ENDS 3.2提示语显示: 利用 DOS 21H 中断类型 09 号键盘功能调用, 在屏幕输出提示用户输入年份 的提示。首先,将要显示的字符串放在内存数据区中,本设计提示语显示程序代 码如下: MOV AH,09H ;输出 MOV DX,OFFSET MESSAGE1 INT 21H 3.3 字符串输入: 利用DOS 21H中断类型的10号键盘功能调用, 将从键盘接收的表示年份数值 的字符串按字节存储缓冲区。首先,应在内存中建立一个输入缓冲区,如inbuff db 5,?,5 dup(?)。本设计字符串输入程序代码如下: MOV AH