周扬微机原理课程设计报告.docx

上传人:b****3 文档编号:5628687 上传时间:2023-05-08 格式:DOCX 页数:11 大小:71.44KB
下载 相关 举报
周扬微机原理课程设计报告.docx_第1页
第1页 / 共11页
周扬微机原理课程设计报告.docx_第2页
第2页 / 共11页
周扬微机原理课程设计报告.docx_第3页
第3页 / 共11页
周扬微机原理课程设计报告.docx_第4页
第4页 / 共11页
周扬微机原理课程设计报告.docx_第5页
第5页 / 共11页
周扬微机原理课程设计报告.docx_第6页
第6页 / 共11页
周扬微机原理课程设计报告.docx_第7页
第7页 / 共11页
周扬微机原理课程设计报告.docx_第8页
第8页 / 共11页
周扬微机原理课程设计报告.docx_第9页
第9页 / 共11页
周扬微机原理课程设计报告.docx_第10页
第10页 / 共11页
周扬微机原理课程设计报告.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

周扬微机原理课程设计报告.docx

《周扬微机原理课程设计报告.docx》由会员分享,可在线阅读,更多相关《周扬微机原理课程设计报告.docx(11页珍藏版)》请在冰点文库上搜索。

周扬微机原理课程设计报告.docx

周扬微机原理课程设计报告

周扬微机原理课程设计报告

江苏大学微机原理课程设计报告

 

姓名:

周扬

学院:

电气信息工程学院

班级:

自动化1202

学号:

3120502044

 

【实验目的】

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

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

 

【实验内容】

1.字符串匹配设计

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

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

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

3.字符和数据的显示设计

先显示信息“INPUTSTRINGTHEENDFLAGIS$”再接受字符如为0~9则计数器加1并显示数据。

如为非数字,则直接显示但不计数。

4.学生成绩名次表设计

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

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

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

 

【课程设计题目详解】

一流程图设计

排学生成绩名次表主程序参考流程排学生成绩名次表SCAN子程序参考流程

 

二代码设计

CRLFMACRO;宏定义,回车换行

MOVAH,02H;显示一位ASCLL码

MOVDL,0DH;回车

INT21H

MOVAH,02H

MOVDL,0AH;换行

INT21H

ENDM

DATASEGMENT

STUNUMEQU30;学生数

SHURUXDB'PLEASEINPUT30SCORE',0DH,0AH,'$';输入提示信息

ERRORDB'INPUTERROR,TRYAGAIN',0DH,0AH,'$';错误提示信息

SHUCHUDB'THEORDERIS:

',0DH,0AH,'$';输出提示信息

EMARKDB?

;错误标志位

ORG1000H;存放成绩信息首址

SCOREDB30DUP(?

);30个成绩

ORG2000H;存放名次信息地址

MCDB30DUP(?

);名次表

DATAENDS

STACKSEGMENT;设置堆栈段

STADW32DUP(?

TOPDW?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVSP,TOP

ZY:

MOVAH,09H;显示输入提示信息,显示字符串

MOVDX,OFFSETSHURUX

INT21H

MOVSI,OFFSETSCORE;成绩表首地址

MOVCX,STUNUM;CX=30

MOVEMARK,0;错误标志位清零

SRCJ:

CALLGETNUM;调用子程序读成绩

CMPEMARK,01H;判断是否出错

JEZY;出错则从新输入

MOV[SI],DL;DL为成绩,没出错即输入成绩

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

LOOPSRCJ;循环,将30个成绩读取完

MOVCX,STUNUM;循环存30个同学的名次

MOVDI,OFFSETMC;名次的首地址

FMC:

CALLSCAN;调用子程序,记住成绩最高的学号,

;其成绩清零

MOVAL,STUNUM;学生总数

SUBAL,CL

INCAL;计算名次

MOVBX,DX;学号,即偏移地址

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

PUSHBX

PUSHCX

XORAH,AH;AH清零

MOVBH,0AH;BH=10

DIVBH;除以10,取高位,商在AL,余数在AH

MOVCL,4

SHLAL,CL;左移4位

ADDAL,AH;相加,AL即成绩的压缩BCD码

MOVDH,AL;DH存放名次

POPCX

POPBX

POPAX

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

LOOPFMC;循环存完30个名次

MOVAH,09H

LEADX,SHUCHU;MOVDXOFFSETSHUCHU输出提示信息

INT21H

MOVCX,STUNUM

MOVSI,OFFSETMC;SI名次首地址

XSMC:

MOVAL,[SI];AL放名次。

这部分用于显示名次

CALLDISPP;调用子程序显示名次,转化成ACSII,显示高

低位

PUSHDX

PUSHAX

MOVAH,02

MOVDL,20H;成绩之间显示空格

INT21H

POPAX

POPDX

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

LOOPXSMC;循环显示30个名次

MOVAH,4CH;返回DOS

INT21H

SCANPROCNEAR;扫描子程序,每调用一遍,找出成绩表中最

;高成绩,记录学号,将此成绩清零

PUSHCX

MOVCX,STUNUM

MOVAL,00H

MOVBX,OFFSETSCORE

MOVSI,BX;成绩的偏移地址

BJCJ:

CMPAL,[SI]

JAEBJH;AL>=[SI]不交换

MOVAL,[SI];AL<[SI]交换

MOVDX,SI;取偏移地址

SUBDX,BX;取学号

BJH:

INCSI

LOOPBJCJ;循环与30个成绩比较,找出最高

ADDBX,DX;BX最高成绩的偏移地址

MOVBYTEPTR[BX],00H;最高成绩清零

POPCX

RET

SCANENDP

DISPPPROCNEAR;显示子程序

PUSHCX

MOVBL,AL;显示高四位

MOVDL,BL

MOVCL,04

ROLDL,CL;DL高四位转移到低四位

ANDDL,0FH;保留此时的低四位

CALLDISPL;调用ASCII码显示子程序

MOVDL,BL;显示低四位

ANDDL,0FH

CALLDISPL

POPCX

RET

DISPPENDP

DISPLPROCNEAR;将名次转换成对应ASCII显示

ADDDL,30H;0-9,ASCII码30H-39H

MOVAH,02H

INT21H

RET

DISPLENDP

GETNUMPROCNEAR;读取成绩子程序

PUSHCX

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

XHSR:

MOVAH,01H

INT21H;键盘输入字符

CMPAL,0DH

JZJIESU;如果是回车就结束

SUBAL,30H

JBERR;小于0则报错

CMPAL,09H

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

JMPERR;否则报错

GETS:

MOVCL,04

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

XORAH,AH

ADDDX,AX;将数据存与DX低四位

JMPXHSR;继续读数

ERR:

MOVAH,09H;显示报错信息

MOVDX,OFFSETERROR

INT21H

MOVEMARK,01H;报错标志位置一

JIESU:

PUSHDX

CRLF;回车换行

POPDX

POPCX

RET

GETNUMENDP

CODEENDS

ENDSTART

 

【实验截图】

 

【心得体会】

在短短一周的微机原理课程设计中,通过自己编程,摸索,做题,查资料,再加上同学和老师的帮助,我完成了老师布置的几个任务,学到了不少东西,感觉汇编语言还是在于多多练习,熟能生巧,这次课程设计获益良多。

在这一周里,应该说还是比较困难的,毕竟要求写的程序比较大,不是之前的小程序,所以一开始上手还是比较困难的。

以前学到的都是课本上的基础知识,虽然也有上机课程,但是一学期就几节,而且编的只是一些小程序。

而在这段时间,我们的主要任务就是编程,不仅要编出来,还要进行实际的操作运行得出正确的结果,这就让我们将平常所学的理论知识与实践相结合了起来,同时也让我们对DOS系统有了更进一步的了解。

指导书上的13个程序,还是蛮多的,最开始的时候,感觉都好难,还是得从简单的做起,我认为基础打好了,才有利于写后面难的程序,所以我仔细研究了,前几个程序。

特别是DOS功能调用,以前并没有用这么多,就是INT20,结束就差不多了。

这次用的较多,字符输入输出,字符串的输入输出,回车换行等等,还得慢慢熟悉。

基础掌握了差不多了,我就开始编写一个比较大的程序,所以我仔细写了,第九个排序成绩的程序,问题还是不少,最开始的就是一些小问题,当然最重要的就是逻辑问题,逻辑错了,程序怎么运行都不对。

小问题比如0和O,编写有时候会写错,还有nDUP(?

)的对是,nDUP(?

)就是错的,中间需要空格,等等都是一些小问题,这些都是因为平时没有练习的结果,多练习,这些小问题就越来越少了,当然最重要的还是逻辑问题,不能搞错。

最让我头疼的就是成绩的输入,和排名的输出,汇编语言又没有数组,怎样输入输出高四位低四位,还有BCD码,ASCII码的转化等等,都需要慢慢想,还是比较困难的。

总的来讲收获颇丰,这不仅仅是一次编程,跟是一次让我们系统的训练,让我们对微机原理,汇编语言有了跟深的了解,唯一觉的不足的就是时间有点短,实际上就4天,让我们编程,要完成4到5个任务,比较急,还是希望时间能多一点。

不管怎样,还是学到了很多,对我有很大的帮助。

感谢老师的悉心指导。

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2