微机原理课程设闰年的计算完整版
- 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 EQ
0)其中,(AX)中存放的是从键盘输入的年份值。
2.设计流程图
3.程序说明
1、代码段定义:
代码段需要定义欲显示的字符串,且字符串以‘$’作为结束标志,还需要
定义欲输入字符串的缓冲区,缓冲区的第一个字节存放能保存的最大字符数,第二个字节存放世界输入的字符数,用户从键盘输入的字符从第三个字节开始存放,直到用户输入回车位置。
本设计代码段定义如下:
data segment
infon 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 0
buf db 8
db ?
db 8 dup(?)
data ends
2、提示语显示:
利用DOS 21H中断类型09号键盘功能调用,在屏幕输出提示用户输入年份的提示。首先,将要显示的字符串放在内存数据区中,本设计提示语显示程序代码如下:
lea dx,infon
mov ah,9
int 21h
3、字符串输入:
利用DOS 21H中断类型的10号键盘功能调用,将从键盘接收的表示年份数值的字符串按字节存储缓冲区。首先,应在内存中建立一个输入缓冲区,如inbuff db 5,?5 dup(?)。本设计字符串输入程序代码如下:
lea dx,buf
mov ah,0Ah
int 21h
4、数制转换:
利用0—9这个数的ASCII码值比本身大30H的关系,将字符串中的每个字
符转换为对应的十进制数值。本设计数制转换程序代码如下:
tt1:inc si
loop tt1
pop cx
mov dh,30h
mov bl,10
mov ax,1
5、是否为闰年的判断:
利用判断某年是否为闰年的表达式,输出该年是否为闰年的信息。
cmp dx,0
jnz lab1
mov ax,cx
mov bx,100
mov dx,0
div bx
cmp dx,0
jnz lab2
mov ax,cx
mov bx,400
div bx
cmp dx,0
jz lab2
四、软件使用说明书
在dos环境下运行。
在“D:\masm611\bin>”提示符下输入命令“masm ifyears.asm”后,如图所示: