学 号:
课 程 设 计
题 目
字符串动画显示
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
学 院
自动化学院
专 业
自动化专业
班 级
自动化1004
姓 名
指导教师
2013
年
1
月
10
日
课程设计任务书
学生姓名: 专业班级:
指导教师: 教 授 工作单位: 自动化学院
题 目: 字符串动画显示设计
初始条件:
掌握8086汇编语言程序设计方法,设计不同的动态显示方式来实现一个字符串定的动画显示,完成相应的程序编写。
要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、菜单
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
包括:
输入字符串;
字符串动画显示;
退出。
2、输入字符串
选择该项后,可以输入一个字符串。该字符串即为动画显示时所显示的字符串。
3、字符串动画显示
所显示字符串在一矩形框内从无到有,从右至左移动,完全从框内移出后,又从右至左移动,直到有任意键按下,停止字符串动画显示返回到主菜单。 4、在主菜单中选择退出项,则结束程序返回DOS。
5. 撰写课程设计说明书。内容包括:摘要、
目录
工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录
、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
、课程设计收获及心得体会。
时间安排:
2012年12月 30日----- 12月31日 查阅资料及方案设计
2013年01月 01日----- 01月05日 编程
2013年01月06 日----- 01月08日 调试程序
2013年01月09 日----- 01月10日 撰写课程设计报告
指导教师签名: 2013 年 01 月 11 日
系主任(或责任教师)签名: 年 月 日
目 录
摘要 1
1 总体方案论证 2
1.1题目功能 2
1.2算法分析 2
2 流程图设计及说明 3
2.1主程序流程图 3
2.2菜单流程图 4
2.3字符串输入流程图 5
2.4字符串左移流程图 6
2.5按任意键返回菜单流程图 7
3 软件设计关键问题或程序段落说明 8
3.1提示退出或继续功能实现 8
3.2字符串输入功能实现 8
3.3字符左移程序实现 9
3.4按任意键返回菜单的实现 10
3.5延时函数的实现 11
4 结果记录及分析 12
4.1提示窗口 12
心得体会 14
参考文献 15
附录:程序清单 16
摘要
本设计使用汇编语言,在MF2KP平台上实现了字符串的输入并且动画显示的效果。21世纪是一个科技的时代,是一个计算机广泛使用的时代,认真学好计算机知识,熟悉计算机软件编程对未来走上社会从事科学研究有很大的帮助。
本文的字符串动画显示程序,通过灵活运用汇编语言的操作,灵活运用其语法,结合一定的算法思想,实现了字符串的从右向左,逐个字符从无到有,从有到无的动态循环显示,并且能够在不重新启动程序情况下,随时改动字符串的内容。
关键词:汇编语言 字符串 动画
1 总体方案论证
1.1题目功能
程序起始是菜单,提示是否输入字符串或者退出,按Q/q键可以退出程序,按任意其他键可以开始输入字符串,输入字符串完毕按回车开始动画显示字符串。此时可以按任意键退回到菜单,可以退出也可以再次输入字符串。
1.2算法分析
(1)屏幕提示输入字符串主要运用中断INT 21H的0aH,09H功能;
(2)在确定选择字符输入后进行字符输入,输入完成后判断回车键开始动画显示;
(3)动画显示时实时检测按键是否按下,有任意键按下就退回主菜单;
(4)字符的移动通过改变字符串的起始显示光标来实现,让光标起始变量递减并限制在一定范围就可以了;
(5)字符串的从无到有的渐变效果可以通过判断字符显示是否超过字符显示区域来实现,字符串的从有到无可以通过判断在字符显示区域的字符数来实现。
2 流程图设计及说明
2.1主程序流程图
主程序流程图如图2-1所示:
2.2菜单流程图
菜单程序流程图如图2-2所示:
2.3字符串输入流程图
菜单程序流程图如图2-3所示:
2.4字符串左移流程图
字符串左移程序流程图如图2-4所示:
2.5按任意键返回菜单流程图
按任意键返回菜单程序流程图如图2-5所示:
3 软件设计关键问题或程序段落说明
3.1提示退出或继续功能实现
通过判断按下的按键是否Q键,来决定程序是否要退出。如果按下了按键并且按下的按键不是Q键,那么就开始显示输入字符串。如果没有按下按键程序将一直处于等待状态。
XOR AH,AH
MOV AH,06H
MOV DL,0FFH
INT 21H
cmp al,'Q'
je exit1
cmp al,'q'
je exit1
cmp al,0 ;没有键按下,继续等待
jne Con ;有键按下就下一步
jmp CheckExit
3.2字符串输入功能实现
使用INT21 的0Ah功能实现字符串的输入,通过对字符进行逐个输入,并且实时判端输入的是否回车,直到输入的是回车就执行显示动画程序,否则就一直将输入的字符储存到缓存区。
lea dx,buf
mov ah,0ah
int 21h
mov bx,2 ;多字符输入,回车结束,有效内容自第三个始。
mov di,0
mov StrLen,0
B1:
mov al,buf[bx]
cmp al,13 ;是否是回车?
je AG1
mov buff1[di],al
inc di
inc StrLen
inc bx
jmp B1
3.3字符左移程序实现
这段程序比较长,而且复杂。为了避免字符串移动时闪屏的现象,将一个字符串显示完毕后,延时一段时间,以产生视觉停留效果,随后马上清屏,清屏后不延时就马上进行下一次字符串显示。为了实现从无到有、从右到左的效果, 令字符串起始指针从显示列指针开始增加,如果字符串指针还在显示区内就显示出来,否则不显示。当列指针递减时,就有字符串从右边到左边从无到有地变化了。
为了实现字符串从右到左消失的效果,列指针小于字符显示区下界时,如果字符在显示区就显示,否则不显示,就可以得到字符从有到无的渐变效果。
AG1:
mov ah,0
mov al,2
int 10h;黑白文本
SetCount:
mov count ,40 ;字符串向右移动, 给出起始列
ShowStart: ;循环显示开始
MOV SI,OFFSET buff1
mov dl,count
mov di,0
ShowString:
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 ;显示字符的次数
push ax
mov al,dl
cmp dl,30
pop ax
jb NextWord
int 10h ;show
NextWord:
mov al,dl
add al,StrLen
cmp al,30
jge Next
mov count,41
jmp ShowOver
Next:
cmp dl,40
jg ShowOver
cmp di,word ptr StrLen; 立即数大小取决于字符串大小
jb ShowString
ShowOver:
call delay1