微机原理课程设计报告学生成绩排序名次.docx

上传人:b****6 文档编号:9118759 上传时间:2023-02-03 格式:DOCX 页数:11 大小:144.39KB
下载 相关 举报
微机原理课程设计报告学生成绩排序名次.docx_第1页
第1页 / 共11页
微机原理课程设计报告学生成绩排序名次.docx_第2页
第2页 / 共11页
微机原理课程设计报告学生成绩排序名次.docx_第3页
第3页 / 共11页
微机原理课程设计报告学生成绩排序名次.docx_第4页
第4页 / 共11页
微机原理课程设计报告学生成绩排序名次.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

微机原理课程设计报告学生成绩排序名次.docx

《微机原理课程设计报告学生成绩排序名次.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计报告学生成绩排序名次.docx(11页珍藏版)》请在冰豆网上搜索。

微机原理课程设计报告学生成绩排序名次.docx

微机原理课程设计报告学生成绩排序名次

 

姓名:

XX

班级:

XXXXX

学号:

XXXXXXXXXX

 

目的:

结合微型计算机原理课程的学习,进一步巩固已学的知识,同时针对计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用。

学会使用屏幕编辑程序——EDIT,弄懂汇编程序的上级过程以及如何运用DEBUG软件进行汇编程序的调试。

 

内容与要求:

1.字符串匹配设计

为掌握提示信息的设置方法及读取键入信息的方法,编写程序实现两个字符串比较,如相同则显示“MATCH”,否则显示“NOMATCH”。

2.从键盘输入数据并显示的设计

为掌握键盘接受数据的方法,并了解将键盘数据显示时必须转换为ASCII码的原理,编写程序,将键盘接受到的四位十六进制数据转换为等值的二进制数显示。

3.响铃设计

为掌握响铃的使用方法,编写程序,从键盘接受输入字符,如是数字N则响铃N此,如不是数字则不响。

4.将键盘输入的小写字母转换成大写字母的设计

为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换,编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。

5.学生成绩名次表设计

为进一步熟悉排序方法,编写程序,将100以内的30个成绩存入首址为1000H的存储区中。

1000H+i表示学号为i的学生成绩。

编写程序使得在2000H开始的区域排出名次表,2000H+i为学号i的学生的名次。

 

下面着重介绍程序5——学生成绩名次表设计:

流程图:

主程序流程图SCAN子函数程序流程图

程序代码及注释:

CRLFMACRO;宏定义,回车换行

MOVAH,02H

MOVDL,0DH

INT21H

MOVAH,02H

MOVDL,0AH

INT21H

ENDM

DATASEGMENT

STUNUMEQU30;学生数

MESS1DB'Pleaseinput30score',0DH,0AH,'$';提示信息

ERRORDB'Inputerror,tryagain',0DH,0AH,'$';报错信息

MESS2DB'Theorderis:

',0DH,0AH,'$'

EMARKDB;报错标志

ORG1000H;存放成绩地址

SCOREDB30DUP();成绩表

ORG2000H;存放名次地址

SEQUDB30DUP();名次表

DATAENDS

STACKSEGMENT

STADW32DUP()

TOPDW

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVSP,TOP

MOVAH,09H;显示提示信息

MOVDX,OFFSETMESS1

INT21H

MOVSI,OFFSETSCORE;成绩表首址

MOVCX,STUNUM

MOVEMARK,0;报错标志清0

UUU:

CALLGETNUM;调用子函数读取成绩

CMPEMARK,01H;判断是否出错

JESTART;出错则重新开始

MOV[SI],DL;没出错则存入成绩

INCSI;指向下一个成绩单元地址

LOOPUUU;判断30个成绩是否读取完

MOVCX,STUNUM

MOVDI,OFFSETSEQU;名次表首址

VVV:

CALLSCAN;调用扫描子程序

MOVAL,STUNUM;学生总数

SUBAL,CL;计算名次

INCAL

MOVBX,DX;学号

PUSHAX;将名次转换成压缩BCD码方便显示

PUSHBX

PUSHCX

XORAH,AH

MOVBH,0AH

DIVBH

MOVCL,4

SHLAL,CL

ADDAL,AH

MOVDH,AL

POPCX

POPBX

POPAX

MOV[DI+BX],DH;存入名次

LOOPVVV;判断是否存完

MOVAH,09H;显示名次提示信息

LEADX,MESS2

INT21H

MOVCX,STUNUM

MOVSI,OFFSETSEQU

WWW:

MOVAL,[SI]

CALLDISPI;调用子函数显示名次

PUSHDX

PUSHAX

MOVAH,02;显示空格

MOVDL,20H

INT21H

POPAX

POPDX

INCSI;指向名次表的下一个地址

LOOPWWW;判断是否输出所有名次

MOVAH,4CH;返回DOS

INT21H

SCANPROCNEAR;扫面子函数,没调用一遍,找出成绩表

;中最高成绩,记录其学号,并将此成绩

;清0

PUSHCX

MOVCX,STUNUM

MOVAL,00H

MOVBX,OFFSETSCORE

MOVSI,BX

CCC:

CMPAL,[SI]

JAEJJJ

MOVAL,[SI]

MOVDX,SI

SUBDX,BX

JJJ:

INCSI

LOOPCCC

ADDBX,DX

MOVBYTEPTR[BX],00H

POPCX

RET

SCANENDP

DISPIPROCNEAR;显示子程序

PUSHCX

MOVBL,AL;显示高4位

MOVDL,BL

MOVCL,04

ROLDL,CL

ANDDL,0FH

CALLDISPL

MOVDL,BL;显示低4位

ANDDL,0FH

CALLDISPL

POPCX

RET

DISPIENDP

DISPLPROCNEAR;将名次转换成对应的ASCII码值并显示

ADDDL,30H

MOVAH,02H

INT21H

RET

DISPLENDP

GETNUMPROCNEAR;读取成绩子函数

PUSHCX

XORDX,DX;清0,用于存放成绩

GGG:

MOVAH,01H

INT21H;键盘字符输入

CMPAL,0DH

JZRRR;如果是回车则结束

SUBAL,30H

JBERR;小于0则报错

CMPAL,09H

JBEGETS;如果在0—9之间则存成绩至DX

JMPERR;否则报错

GETS:

MOVCL,04

SHLDX,CL;将DX中已有数值左移四位

XORAH,AH

ADDDX,AX;紧接着将数据存在DX中低四位

JMPGGG;跳转继续读取数据

ERR:

MOVAH,09H;显示报错信息

MOVDX,OFFSETERROR

INT21H

MOVEMARK,01H;报错标志置1

RRR:

PUSHDX

CRLF;回车换行

POPDX

POPCX

RET

GETNUMENDP

CODEENDS

ENDSTART

 

心得体会:

在为期一周的微机原理课程设计中,通过查阅书籍,上网收集资料以及向老师和同学请教,我完成了老师定下的任务。

在此次课程设计过程中感受颇深。

这一周,可以说是苦多于甜,但是可以学到很多东西,同时巩固了以前所学过的知识。

以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必要,很浪费时间。

但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的程序较复杂,画程序方框图是很有必要的。

因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。

在设计过程中遇到了不少的麻烦,最典型的是由于程序相对较大,在用JB,JA等条件跳转语句时出项了超出跳转范围的情况,这就给程序设计带来了一些困难。

由于之前都没遇到过这样的问题,所以刚开始遇到的时候有点棘手,不知道该从哪下手解决此问题,以至于都有了放弃该课题的想法。

但是又觉得不值得,写了这么长的程序就因为这一个小问题而放弃了实在是说不过去,于是就静下新来查阅课本,发现这些条件跳转语句的跳转范围只能在-128B--+127B之间,而无条件跳转指令JMP则不受此约束,于是我添加了一个无条件跳转语句,通过条件跳转语句先跳转到该无条件跳转语句,再通过JMP跳转到需要的地方,于是问题就迎刃而解。

同过这一个小小的问题也暴露出了自身的问题:

对课本知识掌握不牢固,只了解指令的基本功能却忽略了它的约束条件。

还有一些问题,比如为了显示方便,需把16进制数转化成10进制数显示,在进行ASCII码值转换时也遇到了问题,A—F不能正确显示,通过与同学讨论也是自己的疏忽导致的。

这不是第一次用汇编语言来写程序,平时做了很多实验,写了很多小程序。

但这次是一个综合的程序,平时的一些程序稍微改动都可以作为子程序用到,这大大方便了我的设计,为我节省了很多的时间。

在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,去找同学讨论一下,收获很大,可以使很多问题迎刃而解。

不可否认,程序任然存在不少缺点和不足,但通过这次课程设计的却找出了自己在学习上的不足,对以后的工作也有指导作用。

我相信在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的!

 

参考文献:

1.张荣标,机械工业出版社,《微型计算机原理与接口技术第二版》

2.张荣标,《微型计算机原理课程设计指导书》

3.李干林,李升等,北京大学出版社《微机原理及接口技术试验指导书》

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1