微机应用-字符串跳动.doc_第1页
微机应用-字符串跳动.doc_第2页
微机应用-字符串跳动.doc_第3页
微机应用-字符串跳动.doc_第4页
微机应用-字符串跳动.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机应用 课程设计任务书20 11 20 12 学年 第 1 学期第 16周 16 周 题目字符串动画设计 内容及要求:内容:设计一个字符串动画的程序。可以实现字符从无到有,从左到右,从上到下,大小写变化、颜色变化等功能。要求:(1)屏幕提示输入字符串;(2)输入完成后,字符动画显示:从无到有,从左到右,从上到下,大小写变化、颜色变化等;(3)可连续显示或定时显示,直至单击“Q”或“q”键退出程序。进度安排课程设计内容时间分配方案论证1天分析、设计、调试、运行3天检查、整理、写设计报告、小结1天合计5天学生姓名: 指导时间: 16周指导地点:F楼 409室任务下达2011 年 12月 12日任务完成2011年 12月 16日考核方式1.评阅 2.答辩 3.实际操作 4.其它指导教师系(部)主任王长坤注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档摘 要在DEBUG环境中运行程序,通过编译、链接、执行就可以在界面中输入一串字符按Enter键,就可以看到输入的字符串在闪烁,从无到有,从左到右,从上到下,还有颜色的变化。执行完毕后按“Q”或“q”就可以退出程序。目 录1 课题名称42 课题小组成员43 课题内容及要求44 流程图及其解释54.1主程序流程图设计54.2分布具体功能实现流程图设计64.2.1字符串左移64.2.2字符串下移74.2.3字符串闪烁85 软件设计关键问题或程序段落说明95.1提示输入字符串显示功能实现95.2向右、向下移动功能实现105.3字符串大小写变化实现125.4颜色变化功能实现125.5退出功能实现136 结论146.1调试说明146.2结果记录及分析146.2.1提示输入字符串146.2.2输入后显示字符串156.2.3在特定位置从无到有显示156.2.4在特定位置向右移动166.2.5在特定位置向下移动176.2.6小写变成大写加闪烁177 参考文献188 心得体会199 附录20 1 课题名称字符串动画设计 2 课题小组成员及分工 小组成员:赖龙辉、李骏杰、刘斌、刘文文、刘喜兵 分工:赖龙辉负责主程序的编写和监督组员完成其他程序的编写 李骏杰负责实现字符串右移的程序编写及解释 刘斌负责实现字符串下移的程序编写和解释 刘文文负责实现字符串闪烁的程序编写和解释 刘喜兵负责程序的运行和调试 最后大家一起讨论、总结,并写报告3 课题内容及要求要求:(1)字符动画显示,显示方式可为:从无到有,从左到右,从上到下,颜色变化等;(2)可连续显示,直至单击“Q”或“q”键退出程序。内容:(1)屏幕提示输入字符串主要运用中断INT 21H的0A H功能;(2)在确定光标位置后,通过循环改变其行列数值来达到左右上下移动功能;大小写变化则通过将输入字符与a和z比较,若为小写字母,则减去20H,否则不变;颜色变化则通过INT 10H的09H功能循环调用实现;(3)退出功能通过将输入Q和q与其ASCll比较,跳转到退出程序;而退出程序主 要通过INT 21H的4C H功能实现。 4 流程图及其解释4.1主程序流程图设计字符串右移结束开始 段地址初始化 进入Dos窗口输出提示信息输入字符串显示输入字符串YN字符串向下移动字符串小写变大写 三色变换闪烁按Q,q?图4-1 主程序流程图 4.2分布具体功能实现流程图设计4.2.1字符串右移结束 输完?获取字符串YYN图4-2 字符串右移流程图开始 输出字符串设置光标起始位置延迟1输出空白覆盖字符串延迟2 结束?N横坐标更新4.2.2字符串下移结束 输完?获取字符串YYN图4-3 字符串下移流程图开始 输出字符串设置光标起始位置延迟1输出空白覆盖字符串延迟2 结束?N纵坐标更新4.2.3字符串闪烁结束Y图4-4 字符串闪烁流程图N获取字符串开始N是否输完?Y输出字符串设置起始位置延迟1设置字符串颜色次数已到?5软件设计关键问题或程序段落说明5.1提示输入字符串显示功能实现 屏幕提示输入字符串主要运用中断INT 21H的0A H功能,输入后回车则完成字符串在特定位置的显示。另外,在此段程序中,还通过用空字符串的逐个显示来完成字符从无到有的功能实现。 lea dx,buf mov ah,0ah int 21h mov bx,2 ;多字符输入,回车结束,有效内容自第三个始。 mov di,0B1: mov al,bufbx cmp al,13 ;是否是回车? je AG1 mov buff1di,al inc bx inc di jmp B1AG1: mov ah,0 mov al,2 int 10h;黑白文本OTHER: mov cx,0ffffh;AG: mov dh,7 ;hang mov dl,35 ;lie mov ah,2 mov bh,0 ;页号为0 int 10h ;置光标位置 lea dx,buff1 mov ah,9 int 21h ;显示字符串 mov dh,7 mov dl,35 mov ah,2 mov bh,0 int 10h ;置光标位置 lea dx,buff2 mov ah,9 int 21h; sub cx,1 ; jnz AG ;不等于转移5.2向右、向下移动功能实现 如流程图可知,向下和向右移动,程序基本相同,只不过一个改变的是行,另一个改变的是列,以下以向右移动为例。主要通过INT 10H 调用,且循环操作一定次数实现。其中,在下一次输出时,为了清除前一个位置的输出,用空字符串替代。另外,通过延时控制移动速度。程序如下: mov al,3 mov ah,0 int 10h ;16色文本 mov dl,0 ;字符串向右移动, 给出起始列bbb2: MOV SI,OFFSET buff1 mov di,0bbb1: mov dh,7 ;dh hang dl lie inc dl mov ah,2 int 10h ;置光标位置 2号置光标位置 9号指定输出,每次显示一个 mov ah,09 ;9号功能 inc di mov al,si inc si mov bh,0 ;显示页 mov bl,0eh ;color mov cx,01 ;显示字符的次数 int 10h cmp di,0fh ; 立即数大小取决于字符串大小 jb bbb1 call delay1 sub dl,0fh ; 设置列 mov SI,OFFSET buff2 mov di,0ccc1: mov dh,7 ;dh hang dl lie inc dl mov ah,2 int 10h ;置光标位置 mov ah,09 ;9号功能 inc di mov al,si inc si mov bh,0 ;显示页 mov bl,0eh ;color mov cx,01 ;字符重复一次 int 10h cmp di,0fh jb ccc1 call delay2 mov ah,07 int 21h 首先在一个位置输出 然后输出空白覆盖掉在输出下一个位置 cmp dl,25 jnb xiangxia ; 在这里跳出右移, 转到向下 sub dl,0dh jmp bbb25.3字符串大小写变化实现 因为在ASCII表中大小写相差20H,所以通过将输入字符与a和z比较,若为小写字母,则减去20H,否则不变。程序如下:daxiaoxie: mov dl,7 mov dh,35 MOV SI,OFFSET buff1 mov di,0a1: mov al,SI cmp al,$ je shansuo cmp al,a jb next cmp al,z ja next sub al,20h mov SI,alnext:inc SI jmp a15.4颜色变化功能实现 颜色变化功能实现相当于对字符串属性定义,表现出颜色差别,然后循环调用并插入延时。以下程序效果是三种颜色闪烁,其中aaa1表示黄色,aaa2表示绿色,aaa3表示红色。具体程序如下:shansuo: ;三种颜色闪烁 call aaa1 call delay1 call aaa2 call delay1 ;内部转换后 还是用BIOS 10h 9号功能调用 call aaa3 call delay1jmp shansuo 5.5退出功能实现 退出功能通过将输入Q和q与其ASC比较,跳转到退出程序;而退出程序主要通过INT 21H的4C H功能实现。 mov ah,08h;q键退出 int 21H cmp AL,Q je exit cmp AL,qje exit exit: mov ah,4ch int 21h 6结论 6.1调试说明 所谓程序调试,是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程。这是保证计算机信息系统正确性的必不可少的步骤。编完计算机程序,必须送入计算机中测试。调试过程中出现很多问题。很多次,程序更改后得不到目标文件,主要原因是编程过程中不够细心,而且没有整体把握。例如,有段名重复的错误,还有对调用不熟悉造成编程过程很痛苦。 6.2结果记录与分析 6.2.1显示输入字符串以下是在运行程序后窗口出现的界面,提示输入字符串以及按Q或q退出。如图6.1图6.1 提示输入字符串6.2.2输入后显示字符串以下是输入字符串后按回车前显示的界面。如图6.2图6.2 输入字符串6.2.3在特定位置从无到有显示 以下是按完回车键后依照程序设定位置,光标先跳到第七行、第三十五列,然后逐个字符循环显示字符串的界面对比。如图6.3图6.3 字符串从无到有6.2.4在特定位置向右移动 以下是字符串从第七行、第零列开始右移的对比界面。如图6.4图6.4 字符串右移6.2.5在特定位置向下移动 以下是字符串从第七行、第零列开始下移的对比界面。如图6.5 图6.5 字符串下移6.2.6小写变成大写加闪烁以下是字符串中所有小写字母变成大写后进行黄、绿、红依次变化现象对比界面。如图6.6: 图6.6 字符串颜色变化7 参考文献1 彭虎等编著微机原理与接口技术(第二版)北京:电子工业出版社,20082 沈美明,温东禅IBM-PC汇编语句程序设计(第2版)北京:清华大学出版社,20013 任向明,卢惠林汇编语言程序设计实用教程北京:清华大学出版社,20094 马力妮80x86汇编语言程序设计北京:机械工业出版社,20045 艾德才Pentium系列微型计算机原理与接口技术北京:高等教育出版社,20008 心得体会几周的汇编语言课程设计结束了,我的收获很大。通过课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。通过这次课程设计,我巩固所了学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能,特别是转向指令,掌握了子程序的定义及调用,以及正确地运用DEBUG指令.这也不是我第一次用汇编语言来,平时也做了很多小型的实验,但这次却是一个相对比较大、比较长的课程设计,所要用到的东西和所需要的资料都比平时的实验要多,也用到了很多的子程序调用,大大的加深了子程序的调用方法。同时也找了很多的资料,了解了一些程序设计方法,节省了我们编写程序的时间。也为以后编写程序提供了基础。在这次课程设计中,我也体会到了合作的重要性,毕竟一个人的力量和能力是有限的,通过大家的合作和配合,就能很轻松的解决很多的问题,遇到不懂的还可以一起讨论和一起查资料,同时也有很大的乐趣,同时也增进了同学之间的友情。 9附录:程序清单data segmentbuff1 db $ buff2 db $buf db 100 dup($)buff3 db please input a string !,13,10,$buff4 db Press Q or q to exit!,13,10,$data endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,ax lea dx,buff3;显示提示信息 mov ah,09h int 21h lea dx,buff4;显示提示信息 mov ah,09h int 21h lea dx,buf mov ah,0ah int 21h mov bx,2 ;多字符输入,回车结束,有效内容自第三个始。 mov di,0B1: mov al,bufbx cmp al,13 ;是否是回车? je AG1 mov buff1di,al inc bx inc di jmp B1AG1: mov ah,0 mov al,2 int 10h;黑白文本OTHER: mov cx,0ffffh;AG: mov dh,7 ;hang mov dl,35 ;lie mov ah,2 mov bh,0 ;页号为0 int 10h ;置光标位置 lea dx,buff1 mov ah,9 int 21h ;显示字符串 mov dh,7 mov dl,35 mov ah,2 mov bh,0 int 10h ;置光标位置 lea dx,buff2 mov ah,9 int 21h; sub cx,1 ; jnz AG ;不等于转移;* mov al,3 mov ah,0 int 10h ;16色文本 mov dl,0 ;字符串向右移动, 给出起始列bbb2: MOV SI,OFFSET buff1 mov di,0bbb1: mov dh,7 ;dh hang dl lie inc dl mov ah,2 int 10h ;置光标位置 2号置光标位置 9号指定输出,每次显示一个 mov ah,09 ;9号功能 inc di mov al,si inc si mov bh,0 ;显示页 mov bl,0eh ;color mov cx,01 ;显示字符的次数 int 10h cmp di,0fh ; 立即数大小取决于字符串大小 jb bbb1 call delay1;* sub dl,0fh ; 设置列 MOV SI,OFFSET buff2 mov di,0ccc1: mov dh,7 ;dh hang dl lie inc dl mov ah,2 int 10h ;置光标位置 mov ah,09 ;9号功能 inc di mov al,si inc si mov bh,0 ;显示页 mov bl,0eh ;color mov cx,01 ;字符重复一次 int 10h cmp di,0fh jb ccc1 call delay2 mov ah,07 int 21h 首先在一个位置输出 然后输出空白覆盖掉在输出下一个位置 cmp dl,25 jnb xiangxia ; 在这里跳出右移, 转到向下 sub dl,0dh jmp bbb2xiangxia: ;字符串向下移动 mov dl,0 mov dh,7 ;dh hang dl lieddd2: MOV SI,OFFSET buff1 mov di,0eee1: inc dl mov ah,2 int 10h ;置光标位置 mov ah,09 ;9号功能 inc di mov al,si inc si mov bh,0 ;显示页 mov bl,0ah ;color mov cx,01 ;字符重复一次 int 10h cmp di,0fh jb eee1 call delay1 sub dl,0fh ; 列回到原处,输出空白覆盖 MOV SI,OFFSET buff2 mov di,0fff1: inc dl mov ah,2 int 10h ;置光标位置 mov ah,09 ;9号功能 inc di mov al,si inc si mov bh,0 ;显示页 mov bl,0eh ;color mov cx,01 ;字符重复一次 int 10h cmp di,0fh jb fff1 call delay2 cmp dh,13 ;从第7行 下移到13行 退出到大小写转换 jnb daxiaoxie inc dh sub dl,0fh jmp ddd2 ;字符串向下移动 结束daxiaoxie: mov dl,7 mov dh,35 MOV SI,OFFSET buff1 mov di,0a1: mov al,SI cmp al,$ je shansuo cmp al,a jb next cmp al,z ja next sub al,20h mov SI,alnext:inc SI jmp a1shansuo: ;三种颜色闪烁 call aaa1 call delay1 call aaa2 call delay1 ;内部转换后 还是用BIOS 10h 9号功能调用 call aaa3 call delay1 MOV AH,08h;q键退出 INT 21H cmp AL,Q je exit cmp AL,q je exit jmp shansuo exit: mov ah,4ch int 21h ;*aaa1 proc near ;黄色 MOV SI,OFFSET buff1 mov di,0 mov dl,20aa1: mov dh,20 ;dh hang dl lie inc dl mov ah,2 int 10h ;置光标位置 mov ah,09 ;9号功能 inc di mov al,si inc si mov bh,0 ;显示页 mov bl,0eh ;color mo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论