汇编语言课程设计1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中北大学信息商务学院课程设计任务书
汇编语言程序设计实验
11/12 学年第二学期
系别:信息与通信工程
专业:自动化
学生姓名:刘波学号:09050542X45 课程设计题目:成绩等级判断程序设计
起迄日期: 6 月18 日~ 6 月24 日
指导教师:刘长明
系主任:王明泉
下达任务书日期: 2012 年6月 18 日
1.设计目的:
设计一个根据所学汇编语言课程的知识,熟练8086汇编语言的编程原理,和程序设计思想,编写一个综合性应用程序进一步提高综合运用知识的能力。
2.设计内容和要求
(1)题目内容:
●成绩等级判断程序设计:90以上输出A,80~90输出B……;可以重复输入,
有退出键功能。
●定时中断程序:定时30秒,在30秒内,输入字符,时间到输出字符个数。
●屏幕输入程序:屏幕上开窗口,按上下左右键,调节屏幕窗口尺寸。
实时时钟程序设计:每隔一秒显示系统时钟;可以重复输入,有退出键功能。
●闰年判别程序设计:输入四位年份判断是否为闰年,是输出Y,不是输出N;
可以重复输入,有退出键功能。
(2)题目要求:以上题目任选一个做,写出设计说明书,包涵程序清单和流程图。3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、
实物样品等〕:
(1)查阅资料,确定程序方案
(2)画出流程图,编写程序
(3)撰写课程设计说明书
4.主要参考文献:
《IBM PC汇编语言程序设计》沈美明,温冬禅,清华大学出版社,第二版。
5.设计成果形式及要求:
课程设计说明书1份
流程图1份
程序清单1份
6.工作计划及进度:
2012年 6月18日 ~ 6月19日收集整理资料,确定程序设计方案
6月20日 ~ 6月23日画出流程图,编写程序
6月22日撰写课程设计说明书答辩
系主任审查意见:
签字:
年月日
程序设计
一、题目基本内容
设计题目:成绩评定
具体要求:
(1)显示简易数字菜单
(2)输入成绩,显示成绩评定的等级(90-100为优,80-90为良,70-80为中,60-70为及格,60分以下为不及格)
二、系统流程框图
(al)=1或2?
开始简易数字菜单
选择菜单号
退出
输入成绩到bx (al)=1?
(bx)=’o ’?
(bx)<60?
(bx)<70?
(bx)<80?
(bx)<90?
(bx)<=100?
显示等级A
显示等级B 显示等级C
显示等级D 显示等级E
三、课程设计的具体内容说明
根据课题的要求,主要完成一下几方面的设计:
1.显示简易数字菜单,根据选择的菜单号,执行相应的分支程序
2.从键盘输入一个十进制数字(编写一个子程序)
3.对输入的数据进行比较,显示相应成绩等级
(优,良,中,及格,不及格可以分别用A,B,C,D,E表示)
四、课程设计中关键内容的分析设计说明
1.简易数字菜单只有两个选择号(1~2),选择1表示就跳转到执行成绩评定的程序,选择2就返回到DOS窗口。从键盘输入的数字(1~2)是以字符形式输入的,所以在al中存放的是其ASSCII码值,要将其转换成相应的数字,用and al,0fh或sub al,30h可以实现转换。
2.执行成绩评定程序就要求从键盘输入一个数据,然后将其与相应的分数进行比较,关键是如何从键盘输入一个十进制数,这可以用到子程序的思想,将从键盘输入一个十进制数编写成子程序,然后调用它,从键盘输入一个十进制数子程序其主要算法思想如下:
①输入0~9数字(ASCII码),并减30H转换为二进制数
②然后将前面输入的数值乘10,并与刚输入的数字相加得到新的数值
③重复①、②步,直到输入一个非数字字符结束
④将数值保存到相应的寄存器中
3.将输入的数据与相应的分数比较,输出相应的等级。
程序运行结果(截图)
源程序代码
.model small
.stack
.data
mes db'***menu***',0dh,0ah,'$'
mes1 db'***1-score valuation***',0dh,0ah,'$'
mes2 db'***2-Exit***',0dh,0ah,'$'
mes3 db'input number(1~2)',0dh,0ah,'$'
mes4 db'input a score',0dh,0ah,'$'
level1 db 0dh,0ah,'the level of score is:A','$' ;90-100分:成绩等级为A
level2 db 0dh,0ah,'the level of score is:B','$' ;80-90分:成绩等级为B
level3 db 0dh,0ah,'the level of score is:C','$' ;70-80分:成绩等级为C
level4 db 0dh,0ah,'the level of score is:D','$' ;60-70分:成绩等级为D
level5 db 0dh,0ah,'the level of score is:E','$' ;0-60分:成绩等级为E
string db 0dh,0ah,'$'
table dw disp1,disp2 ;取得各个标号的偏移地址
.code
.startup
start1:mov dx,offset mes ;显示简易数字菜单mov ah,9
int 21h
mov dx,offset mes1
mov ah,9
int 21h
mov dx,offset mes2
mov ah,9
int 21h
mov dx,offset mes3 ;提示输入数字
mov ah,9
int 21h
mov ah,1 ;等待按键
int 21h
cmp al,'1' ;数字< 1 ?
jb start1
cmp al,'2' ;数字>2 ?
ja start1
and ax,0000fh ;将ASCII码转换成数字
dec ax
shl ax,1 ;等效于add ax,ax
mov bx,ax
jmp table[bx] ;(段内)间接转移:IP<-[table+bx]
start2:.exit 0
start3:mov dx,offset level5
mov ah,9
int 21h
jmp disp1
start4:mov dx,offset level4
mov ah,9
int 21h
jmp disp1
start5:mov dx,offset level3
mov ah,9
int 21h
jmp disp1
start6:mov dx,offset level2
mov ah,9
int 21h
jmp disp1
start7:mov dx,offset level1
mov ah,9
int 21h
jmp disp1
read proc ;从键盘输入一个十进制数子程序
push cx
push ax
read1:
mov bx, 0 ;把bx清零
read2:
mov ah, 1
int 21h
cmp al,'o' ;若输入为字母o,则返回主菜单
je start1
cmp al, 0dh
je read3 ;输入为回车字符则数据输入结束