微机原理字符串动画显示.docx
《微机原理字符串动画显示.docx》由会员分享,可在线阅读,更多相关《微机原理字符串动画显示.docx(12页珍藏版)》请在冰豆网上搜索。
微机原理字符串动画显示
HEBElUNIVERSlTYOFSClENCEANDTECHNOLOGY
课程设计报告
学生姓名:
甄晓学号:
130704121
专业班级:
电科131班
课程名称:
微型计算机原理及应用技术
学年学期:
2015—2016学年第一学期
同组人员:
张思雨张文娟张哲姚博朗
指导教师:
赵艳
2015年12月
课程设计成绩评定表
学生姓名
甄晓
学号
130704121成绩
专业班级
电科131班
起止时间
12月21日——12月28日
设计题目
字符串动画显示
指导教师评语
指导教师:
年月日
一设计目的1
二设计任务和要求1
三设计内容1
四源代码以及主要代码分析5
五效果及功能展示12
六自己的贡献和心得体会14
字符串的动画显示程序设计
一、设计目的:
1、掌握汇编语言,会利用汇编语言编写一定功能的程序;
2、熟悉DoS环境以及在DoS下会调试编写好的汇编程序;
3、熟悉常用的DOS功能;
4、小组合作完成设计题目。
二、设计任务和要求
1、设计字符串的动画显示程序
2、程序设计基本要求
1)菜单
内容包括:
①输入字符串;②字符串动画显示;③退出。
2)输入字符串
选择该项后,可以输入一个字符串.该字符串即为动画显示时所显示的字符串.
3)字符串动画显示
所显示字符串在一矩形框内从无到有,从右至左移动,完全从框内移出后,又从右至左移动,直到有任意键按下,停止字符串动画显示返回到主菜单。
4)在主菜单中选择退出项,则结束程序返回DoS。
三、设计内容:
1、使用的DOS功能:
1)显示字符串MOVAH,09H
INT21H;入口参数DS:
DX缓冲区
2)键盘输入一个字符MOVAH,01H
INT21H;AL=输入的字符
3)终止当前程序并返回调用程序MOVAH,4CH
INT21H;AL=退出码
4)输入字符串MOVAH,0AH
INT21H;入口参数DS:
DX缓冲区
2、使用工具和软件:
PC机一台,MASI汇编软件
3、流程图:
1)字符串从右向左移动
2)整体流程图
字符串从右向左移流程图
开始
显示菜单
从键盘读入字符
1T
从键盘输入字符串,显示在屏幕,光标前移
接收输入的字符,并存在以Str开头的内存单元
调用字符串移动框图
显示字符串从右向左移动
1
F
延时,等待输入指令
显示"PreSSanykeyto
exit∙∙∙
a
I
输入任意字符
1
F
退出程程序,返回
DoS
四、源代码以及主要代码分析
1、字符串从右向左移动程序CODESEGMENT
ASSUMECS:
CODE,DS:
CODE
START:
MOVAX,CODE
MOVDS,AX
MOVAX,0B800H
MOVES,AX
CLD
AGAIN:
MOVAX,3
INT10H;显示文字
LEADX,MENU
MOVAH,9;输出字符串
INT21H
INPUT:
MOVAH,1
INT21H;从键盘输入字符
CMPAL,’1’
JNECP2
CALLSUB01
;JMPINPUT
CP2:
CMPAL,’2'
JNZCP3
CALLSUB02;字符串左右移动
JMPAGAIN;返回到主菜单
CP3:
CMPAL,'3’;返回DOS
JNZINPUT
LEADX,MESG
MOVAH,9
INT21H
MOVAH,1
INT21H
MOVAH,4CH
INT21H
DELAYPROC
PUSH
CX
PUSH
DX
MOV
DX,0100
D1:
MOV
CX,0FFFH
LOOP$
DEC
DX
JNZ
D1
POP
DX
POPCX
RET
DELAYENDP
CSH:
MOVAL,20H
MOVCX,60;初始化
CS1:
REPSTOSB
RET
SUB01:
MOVAX,0E0DH
INT10H
MOVAL,0AH
INT10H
LEADX,STR1
MOVAH,0AH
INT21H;输入一个字符串
MOVAX,0E0AH
INT10H;换行
;RET
SUB02:
CMPSTR1+1,2;取串长最短为2个字符
JNBY2
JMPQUIT
Y2:
CALLLINE;画矩形框
MOVDX,ES
PUSHDS
POPES
MOVDI,1000H
CALLCSH
MOVCL,STR1+1
MOVCH,0;取串长
LEASI,BUF;指向串首
MOVDI,1000H
ADDDI,60-1
MOVNUM,DI
ADDNUM,CX
REPMOVSB;移至显示缓冲区,重复存储字符串
CALLCSH
SHOW:
MOVES,DX
MOVBP,1000H;恢复数据区
Y3:
MOVSI,BP;置源数据区指针
MOVDI,LEFT;找屏幕位置
MOVAH,7CH
MOVCX,60-2
Y4:
LODSB
STOSW;送显存
LOOPY4
MOVAH,1
INT16H
JNZSSS;按任意键,返回主菜单
CALLDELAY
INCBP;源数据区指针后移一位
CMPBP,NUM
JBSS1
MOVBP,1000H;恢复数据区
SS1:
JMPY3
SSS:
MOVSTR1+1,0
QUIT:
XORDI,DI
MOVCX,80*25
MOVAX,720H
REPSTOSW;清全屏
;RET
JMPAGAIN
LINE:
MOVDI,(18*80+10)*2;矩形框
MOVAL,201;左上角
MOVAH,0EHSTOSW
MOVCX,60—2MOVAL,205;REPSTOSWMOVAL,187;
STOSW
ADDDI,20*2MOVAL,186;
STOSW
MOVLEFT,DIMOVCX,60—2MOVAL,20H;REPSTOSWMOVRIGHT,DIMOVAL,186;
STOSW
ADDDI,20*2MOVAL,200;
STOSW
MOVCX,60-2
横框
右上角
竖框
空格
竖框
左下角
MOVAL,205;横框
REPSTOSW
MOVAL,188;右下角
STOSW
RET
MENUDB5DUP(0AH)
DB31DUP(''),'MAINMENU’,0DH,0AH
DB25DUP('’),201,21DUP(205),187,0DH,0AH
DB25DUP(’'),186,'1.InputaString。
.。
',186,0DH,0AH
DB25DUP(’'),186,’2。
DisplayModel.。
。
’,186,0DH,0AH
DB25DUP(’'),186,’3。
ReturntoDOS..。
',186,0DH,0AH
DB25DUP(’'),200,21DUP(205),188,0DH,0AH
DB28DUP(’’),'Choice(1,2,3):
$’
MESGDB0dh,0ah,0dh,0ah,9,'Pressanykeytoexit...$'
NUMDW0
LEFTDW0
RIGHTDW0
STR1DB21
DB0
BUFDB0DH,20DUP(0)
CoDEENDS
ENDSTART
五、功能效果展示
(1)运行程序后显示的主菜单
(2)按“T显示待输入字符串状态
(3)按“2"字符串在矩形框中从右向左移动
畐DOSBOX0.74fCPUspeed:
3000CydeSIFrame5kip0.Program:
TEMPnLEID。
MAIrlMEMU
1.InPUtaString…。
ZkDiSPlayMUdel…。
3.ReturntoDOS.。
。
ChOiCetliZ,3):
1
szfħsugb
(4)按“3”显示按任意键返回
MAIMHEMU
1.InputaString。
.ZJispLnyMUdel…3.ReturntoDOS。
..
ChoieeelfZI3):
3
Pressanykeytoexit.
(5)按任意键返回
六、自己的贡献和心得体会
一次微机原理课程设计,一次全新的体验,在这次课程设计中,我们获益良多。
课程设计以小组的形式进行,我们小组五人,每人负责不同的工作,于合作中追求共赢。
张思雨主要负责框图的设计,张哲主要负责设定菜单和字符串的输入,张文娟主要负责字符串移动,我负责边框的设置和程序的返回,姚博朗主要负责内容的串接、最后的检错及报告的编写。
一次程序的设计对于我们这些初入编程界的新手来说,都是一项工作量不少的作业。
在总的程序设计中,需要我们搜集相关的汇编语言,分析每一段程序与其他段之间的联系,并将它们连接起来。
然而这并不是结束,我们还要将其编辑编译运行调试,查询错误,改正错误,使程序正常运行.说实话,刚得到课程设计题目时,我们真的有
点两眼一摸黑,不知如何下手,但经过上网、图书馆查询、课本研究后,我们终于一步步设计好了程序框图,并写出来程序,虽然在程序运行过程中出现了问题,但经过学霸的帮助和相关资料的查找,我们的问题终于得到了解决,完成了本次课程设计.
时间匆匆,转眼就到了考核的日期。
经过这次课程设计,我感觉我的微原知识都经过了一次刷新,添加了更多的内容。
课程设计是一项既考验知识,又考核我们对知识运用的任务。
通过这次课设,我觉得知识不仅要学还要会用,即使老师讲的再好,我们也不能代替老师,所以学到手的知识才是属于我们自己的知识。
另外,对一个团体来说,团结合作很重要.在这次课设中,我们分工合作,每人负责好自己的,又一起商量课设方向,相互帮助,相互关心,那样再难的问题我们都可以解决。
作为大学生我们应该,锐意进取,团结奋斗,向一个个难题迎难而上,而不悔!
同时感谢赵老师在这一年里的照顾,今后我们也会努力学习,积极进取。