大学信息学院。
综合性设计性实验报告。
班级: 姓名。
学号。实验项目名称: 成绩评定。
实验项目性质: 设计性。
实验所属课程: 微机原理与接**术a
实验室(中心): 软件与通信实验中心
指导教师。实验完成时间: 2013 年 11 月 11 日。
一、 实验目的。
1.显示简易的数字菜单,并根据选择的菜单号执行相应的分支程序,并得到正确的结果。
2.从键盘输入一个成绩能评定成绩的等级,并显示其结果。
二、实验内容及要求。
1)显示简易数字菜单。
2)输入成绩,显示成绩评定的等级(90-100为优,80-90为良,70-80为中,60-70为及格,60分以下为不及格。
三、实验设备及软件。
pc机一台 masm5.0
四、设计方案。
题目:成绩评定。
设计的主要思路:
1.简易数字菜单只有两个选择号(1~2),选择1表示就跳转到执行成绩评定的程序,选择2就返回到dos窗口。从键盘输入的数字(1~2)是以字符形式输入的,所以在al中存放的是其asscii码值,要将其转换成相应的数字,用and al,0fh或sub al,30h可以实现转换。
程序流程图:
2.执行成绩评定程序就要求从键盘输入一个数据,然后将其与相应的分数进行比较,关键是如何从键盘输入一个十进制数,这可以用到子程序的思想,将从键盘输入一个十进制数编写成子程序,然后调用它,从键盘输入一个十进制数子程序其主要算法思想如下:
输入0~9数字(ascii码),并减30h转换为二进制数;
然后将前面输入的数值乘10,并与刚输入的数字相加得到新的数值;
重复①、②步,直到输入一个非数字字符结束;
将数值保存到相应的寄存器中。
主要功能:
1.显示简易数字菜单,根据选择的菜单号,执行相应的分支程序。
2.从键盘输入一个十进制数字(编写一个子程序)
3.对输入的数据进行比较,显示相应成绩等级(优,良,中,及格,不及格可以分别用a,b,c,d,e表示)
五、主要**。
model small
stackdata
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取得各个标号的偏移地址
codestartup
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]
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输入为回车字符则数据输入结束
cmp al, 30h不是0~9之间的字符,则输入结束
jl read3
cmp al, 39h
ja read3
sub al, 30h是0~9之间的的字符,则转换为二进制数
mov ah, 0
xchg ax, bx交换ax和bx里的值
mov cx, 10
mul cx实现数字乘10
add bx, ax已输入的数字乘10后,与新输入的数字值相加,结果放在bx中。
jmp read2
read3:
pop ax
pop cx
retread endp
disp1: mov dx,offset string ;成绩评定分支程序
mov ah,9
int 21h
mov dx,offset mes4 ;提示输入成绩
mov ah,9
int 21h
call read调用从键盘输入十进制数子程序
cmp bx,60bx)<60 ?
jb start3
cmp bx,70
jb start4
cmp bx,80
jb start5
cmp bx,90
jb start6
cmp bx,100bx)<=100 ?
jbe start7
disp2:jmp start2返回dos
end六、测试结果及说明。
将输入的数据与相应的分数比较,输出相应的等级,如下几句语句:
cmp bx,60bx)<60 ?
jb start3
start3:mov dx,offset level5 ;以level5为首地址的内存存放要显示的成绩等级 :e
mov ah,9
int 21h调用系统功能键输出相应的等级。
程序运行结果(截图)
七、实验体会。
本次汇编语言课程设计是利用我们平时所学的汇编知识编写一个成绩评定的小程序,刚拿到题目的时候还有点担忧。其实这次课程设计并不要求你把书上各种指令及其工能掌握的很好并且能熟练的运用汇编语言编程,而恰恰是利用这次课程设计的机会来提高这方面的能力。
有了整体思路后,编写程序就变得简单的多了,但也遇到了很多的问题,比如在调用系统功能键从键盘输入一个数字(0~9)时,还要将其转换成二进制数字。还有一个比较大的问题是如何从键盘输入一个十进制数,一开始设计的还只能输入一位数,然后进行比较。
微机接口课程设计题目
微机原理及接 术课程设计。题目1 pc 电子琴。一 设计要求。设计一个利用dac0832的输出数字声音的接口电路 可参考实验台原理图 dac0832的输出接至有源音箱,编程实现如下功能 1 按键发声 1 当从键盘上敲击q u键时,音箱发出1 7的高音阶 2 当从键盘上敲击a j键时,音箱发出1 7的...
微机接口课程设计题目
1 步进电机控制设计 4人 控制四相六线步进电机按双8拍的运行方式运行,1 当按下按键开关sw2时,启动步进电机,先向前快走50步,然后反向慢走200步,再停止 2 按下开关sw1,步进电机顺时针旋转,当按下开关sw2,步进电机反时针旋转,按任意键退出 3 每按下一次开关sw2,步进电机走一步,不按...
微机原理与汇编课程设计
微机原理与汇编语言课程设计目录。1 双机串行通信 1 2 显示系统日期时间 1 3 演奏 乐曲演奏 1 4 电子时钟程序设计 3 5 判断闰年程序 6 6 ascii码转换为二进制数 6 7 十进制数转换为二进制数 6 8 二进制数转换为十进制数 6 9 进制加法运算 6 10 进制乘法运算 6 1...