汇编语言课程设计1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 ;输入为回车字符则数据输入结束

相关文档
最新文档