周扬微机原理课程设计报告.docx
《周扬微机原理课程设计报告.docx》由会员分享,可在线阅读,更多相关《周扬微机原理课程设计报告.docx(11页珍藏版)》请在冰点文库上搜索。
![周扬微机原理课程设计报告.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/8697aebf-a96c-4647-aea7-be5035f6c56a/8697aebf-a96c-4647-aea7-be5035f6c56a1.gif)
周扬微机原理课程设计报告
周扬微机原理课程设计报告
江苏大学微机原理课程设计报告
姓名:
周扬
学院:
电气信息工程学院
班级:
自动化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个任务,比较急,还是希望时间能多一点。
不管怎样,还是学到了很多,对我有很大的帮助。
感谢老师的悉心指导。