1、 字符串动画显示 指导教师评语 年 月 日一 设计目的1二 设计任务和要求三 设计内容四 源代码以及主要代码分析5五 效果及功能展示12六 自己的贡献和心得体会14字符串的动画显示程序设计一、设计目的:1、掌握汇编语言,会利用汇编语言编写一定功能的程序;2、熟悉DOS环境以及在DOS下会调试编写好的汇编程序;3、熟悉常用的DOS功能;4、小组合作完成设计题目。二、设计任务和要求1、设计字符串的动画显示程序2、程序设计基本要求 1)菜单内容包括:输入字符串;字符串动画显示;退出。 2)输入字符串选择该项后,可以输入一个字符串。该字符串即为动画显示时所显示的字符串。 3)字符串动画显示所显示字符串
2、在一矩形框内从无到有,从右至左移动,完全从框内移出后,又从右至左移动,直到有任意键按下,停止字符串动画显示返回到主菜单。 4)在主菜单中选择退出项,则结束程序返回DOS。三、设计内容:1、使用的DOS功能:1) 显示字符串 MOV AH,09H INT 21H ;入口参数DS:DX=缓冲区2) 键盘输入一个字符 MOV AH,01H AL=输入的字符3)终止当前程序并返回调用程序 MOV AH,4CH AL=退出码4)输入字符串 MOV AH,0AH 2、使用工具和软件:PC机一台,MASM汇编软件3、流程图:1) 字符串从右向左移动2)整体流程图四、源代码以及主要代码分析1、字符串从右向左移
3、动程序CODE SEGMENTASSUME CS:CODE,DS:CODESTART: MOV AX,CODE MOV DS,AX MOV AX,0B800H MOV ES,AXCLDAGAIN: MOV AX,3 INT 10H ;显示文字 LEA DX,MENU MOV AH,9 ;输出字符串 INT 21HINPUT: MOV AH,1 INT 21H ;从键盘输入字符 CMP AL,1 JNE CP2 CALL SUB01 ;JMP INPUTCP2:2 JNZ CP3 CALL SUB02 ;字符串左右移动 JMP AGAIN ;返回到主菜单CP3:3返回DOS JNZ INPUT
4、LEA DX,MESG MOV AH,9 MOV AH,4CHDELAY PROC PUSH CX PUSH DX MOV DX,0100D1: MOV CX,0FFFH LOOP $ DEC DX JNZ D1 POP DX POP CX RETDELAY ENDPCSH: MOV AL,20H MOV CX,60 ;初始化CS1: REP STOSBSUB01: MOV AX,0E0DH INT 10H MOV AL,0AH LEA DX,STR1 MOV AH,0AH输入一个字符串 MOV AX,0E0AH换行RETSUB02: CMP STR1+1,2 ;取串长最短为2个字符 JNB
5、Y2 JMP QUITY2: CALL LINE ;画矩形框 MOV DX,ES PUSH DS POP ES MOV DI,1000H CALL CSH MOV CL,STR1+1 MOV CH,0 ;取串长 LEA SI,BUF ;指向串首 MOV DI,1000H ADD DI,60-1 MOV NUM,DI ADD NUM,CX REP MOVSB ;移至显示缓冲区,重复存储字符串SHOW: MOV ES,DX MOV BP,1000H ;恢复数据区Y3: MOV SI,BP ;置源数据区指针 MOV DI,LEFT ;找屏幕位置 MOV AH,7CH MOV CX,60-2Y4: L
6、ODSB STOSW ;送显存 LOOP Y4 INT 16H JNZ SSS ;按任意键,返回主菜单 CALL DELAY INC BP ;源数据区指针后移一位 CMP BP,NUM JB SS1SS1: JMP Y3SSS: MOV STR1+1,0QUIT: XOR DI,DI MOV CX,80*25 MOV AX,720H REP STOSW ;清全屏 JMP AGAINLINE: MOV DI,(18*80+10)*2 ;矩形框 MOV AL,201 ;左上角 MOV AH,0EH STOSW MOV AL,205 ;横框 REP STOSW MOV AL,187 ;右上角 ADD
7、 DI,20*2 MOV AL,186 ;竖框 MOV LEFT,DI MOV AL,20H ;空格 MOV RIGHT,DI MOV AL,200 ;左下角 MOV AL,188 ;右下角MENU DB 5 DUP(0AH)DB 31 DUP( ),MAIN MENU,0DH,0AHDB 25 DUP(),201,21 DUP(205),187,0DH,0AH),186, 1.Input a String .,186,0DH,0AH 2.Display Model . 3.Return to DOS . ),200,21 DUP(205),188,0DH,0AHDB 28 DUP(Choic
8、e(1,2,3):$MESG DB 0dh,0ah,0dh,0ah,9,Press any key to exit .$ NUM DW 0 LEFT DW 0 RIGHT DW 0 STR1 DB 21 DB 0 BUF DB 0DH,20 DUP(0)CODE ENDS END START五、功能效果展示(1)运行程序后显示的主菜单(2)按“1”显示待输入字符串状态(3)按“2”字符串在矩形框中从右向左移动(4)按“3”显示按任意键返回(5)按任意键返回六、自己的贡献和心得体会 一次微机原理课程设计,一次全新的体验,在这次课程设计中,我们获益良多。课程设计以小组的形式进行,我们小组五人,每人
9、负责不同的工作,于合作中追求共赢。张思雨主要负责框图的设计,张哲主要负责设定菜单和字符串的输入,张文娟主要负责字符串移动,我负责边框的设置和程序的返回,姚博朗主要负责内容的串接、最后的检错及报告的编写。 一次程序的设计对于我们这些初入编程界的新手来说,都是一项工作量不少的作业。在总的程序设计中,需要我们搜集相关的汇编语言,分析每一段程序与其他段之间的联系,并将它们连接起来。然而这并不是结束,我们还要将其编辑编译运行调试,查询错误,改正错误,使程序正常运行。说实话,刚得到课程设计题目时,我们真的有点两眼一摸黑,不知如何下手,但经过上网、图书馆查询、课本研究后,我们终于一步步设计好了程序框图,并写
10、出来程序,虽然在程序运行过程中出现了问题,但经过学霸的帮助和相关资料的查找,我们的问题终于得到了解决,完成了本次课程设计。 时间匆匆,转眼就到了考核的日期。经过这次课程设计,我感觉我的微原知识都经过了一次刷新,添加了更多的内容。课程设计是一项既考验知识,又考核我们对知识运用的任务。通过这次课设,我觉得知识不仅要学还要会用,即使老师讲的再好,我们也不能代替老师,所以学到手的知识才是属于我们自己的知识。另外,对一个团体来说,团结合作很重要。在这次课设中,我们分工合作,每人负责好自己的,又一起商量课设方向,相互帮助,相互关心,那样再难的问题我们都可以解决。作为大学生我们应该,锐意进取,团结奋斗,向一个个难题迎难而上,而不悔! 同时感谢赵老师在这一年里的照顾,今后我们也会努力学习,积极进取。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1