字符串动画显示_第1页
字符串动画显示_第2页
字符串动画显示_第3页
字符串动画显示_第4页
字符串动画显示_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、河北科技大学河北科技大学 课程设计报告 学生姓名 学 号: 专业班级: 课程名称: 学年学期: 指导教师: 课程设计成绩评定表课程设计成绩评定表 学生姓名学 号成绩 专业班级起止时间 设计题目 字符串动画显示 指 导 教 师 评 语 指导教师: 年 月 日 目录目录 一、一、 课程设计的目的和任务课程设计的目的和任务-3 二、二、 设计题目设计题目-3 三、三、 设计内容要求设计内容要求-3 四、四、 课程设计的主要步骤课程设计的主要步骤-3 五、五、 设计原理及方案设计原理及方案-4 六、六、 实现方法实现方法-5 七、七、 实施结果实施结果-11 八、八、 完成软件的关键技术完成软件的关键

2、技术-12 九、九、 我写的部分我写的部分-12 十、十、 设计总结和心得体会设计总结和心得体会-14 一、课程设计的目的和任务一、课程设计的目的和任务 课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的 能力的重要教学环节,它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、 敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。 微机原理及应用是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节, 学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。所以通过有针对性的课程设 计,

3、使学生学会系统地综合运用所学的理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌 握微机硬软件设计方法。 通过课程设计实践,不仅要培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生 在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能用设计报告表 达设计思想和结果的能力。培养学生事实求是和严肃认真的工作态度。 通过设计过程,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机 开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写 设计报告等问题,真正做到理论联系实际,提高动手能力和分

4、析问题、解决问题的能力,实现由学习知识 到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应 用 8086 汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的 使用方法。 二设计题目二设计题目 字符串动画显示 三设计内容要求三设计内容要求 1、菜单 内容包括:输入字符串;字符串动画显示;退出。 2、输入字符串 选择该项后,可以输入一个字符串。该字符串即为动画显示时所显示的字符串。 3、字符串动画显示 所显示字符串从无到有,从中间向两边伸展,直至出来完整的字符串。当按下 R 键后重复移动的动作, 直到按下 Q 键,停止字

5、符串动画显示返回到主菜单。 4、在主菜单中选择退出项,则结束程序返回 DOS。 四、课程设计的主要步骤四、课程设计的主要步骤 课程设计可以分为硬件设计和软件设计两个部分,其设计过程可以归纳为以下所述的四个步骤: 1总体设计 本阶段的任务是通过调查研究,查阅资料来初步确定系统结构的总体方案,其中主要涉及到硬件和 软件的功能划分。 应用系统中硬件和软件具有一定的互换性,即某些功能既可以用硬件实现也可以用软件实现。一 般说来,用硬件实现的优点是可以提高系统的工作速度,但会增加电路的复杂性和硬件成本;而用软 件代替某些硬件的功能可以使电路简化,便于修改设计,降低硬件成本,但软件工作量增大。 总体设计时

6、,必须在硬件和软件之间权衡,分工明确,然后分头开始设计。 2硬件设计过程 利用实验箱的硬件资源,结合课程设计题目,设计硬件原理图,搭建硬件电路。 3软件设计过程 (1)采用模块化程序结构设计软件,可将整个软件分成若干功能模块。 (2)画出程序流程图。 (3)根据流程图,编写源程序。 (4)上机调试程序。 4软、硬件联调。 五设计原理及方案五设计原理及方案 主程序流程图主程序流程图 Y 段地址初始化 进入 DOS 窗口 输出提示信息 输入字符串 字符串动态显示 数码管数据输出 开始 按 Q 键 结束 R 六实现方法六实现方法 程序:程序: 初始化程序: CODE SEGMENT;定义代码段 AS

7、SUME CS:CODE,DS:CODE START: MOV AX,CODE;初始化代码段地址 MOV DS,AX MOV AX,0B800H;彩色显示器缓冲区地址赋给附加段 MOV ES,AX CLD;清方向标志,si 和 di 自动加 1 AGAIN: MOV AX,3;设置显示方式为彩色文本,80 列 25 行, INT 10H;调用 bios 功能 10h,设置显示方式 LEA DX,MENU ;把 menu 的偏移地址赋给了 dx MOV AH,9;显示以 dx 首地址作为偏移地址,$作为结束标志的字符串,显示 menu 菜单。 INT 21H INPUT:;输入功能模块 MOV

8、AH,0;0 号功能调用,从键盘读一个字符送给 al INT 16H CMP AL,1;判断输入字符是否为 1 JNZ CP2;输入不为 1,调转到 cp2,即判断输入是否为 2,输入为 1 则跳过该语句 CALL SUB01 ;输入为 1,则调用输入子程序 sub01,完成输入字符 JMP INPUT;输入字符完成后,用户输入下一个命令 CP2:CMP AL,2;判断输入是否为 2 号命令 JNZ CP3;输入不为 2,调转到 cp3,即判断输入是否为 3,输入为 2 则跳过该语句 CALL SUB02 ;输入为 2,则调用字符变换子程序 sub02,完成字符变换 JMP AGAIN ;字符

9、变换完成后,返回主菜单,提示用户输入下一个主菜单命令 CP3:CMP AL,3 ;退出程序 JNZ INPUT;若输入命令不是 1,2,3,则用户重新输入。 LEA DX,MESG MOV AH,9;提示用户按任意键退出程序 INT 21H MOV AH,1;键盘读入一个字符,用于暂停应用程序。 INT 21H MOV AH,4CH INT 21H DELAY PROC ;延时 1s 子程序 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,2;读取时钟将秒数送到 dh 中 INT 1AH MOV BL,DH;将秒数保存于 bl 中 T: MOV AH,2;再次读取

10、时钟并将现在秒数送到 dh 中 INT 1AH CMP DH,BL;判断当前秒数是否和 bl 中保存的前一秒数是否相同 JZ T;不同则跳出循环 POP DX POP CX POP BX POP AX RET DELAY ENDP SUB01:;完成字符串输入模块 LEA DX,TIPS;提示输入字符串 MOV AH,9 INT 21H LEA DX,STR0;将要输入的字符串首地址送到 dx 中 MOV AH,0AH;将输入的字符串存入 dx 作为偏移地址的内存单元中,及存入 str0 中 INT 21H ; MOV AX,0E0AH;输入结束标志,换行 INT 10H RET SUB02:

11、;完成字符串变换 CMP STR0+1,2;实际长度和 2 进行比较 JNB Y2;大于等于 2 则跳到 y2 JMP QUIT;小于到 quit Y2: CALL LINE ; CALL ASDF INPUT:;qr 功能输入 MOV AH,0;从键盘输入字符 INT 16H CMP AH,10H ;Q JZ SSS;等于 q 跳到 sss,返回主菜单 CMP AH,13H ;R JNZ INPUT;不等于 qr 则用户重新输入 JMP Y2 SSS:MOV STR0+1,0;把实际长度清 0 MOV FLAG,0;将标志清 0 QUIT: XOR DI,DI;将 di 清 0 MOV CX

12、,80*25;将整个屏幕的字符总数放入计数器 cx MOV AX,720H;用 ah=07 黑色,al=20h 空格,将整个屏幕清空 REP STOSW ;重复填充直到 cx=0 为止, RET LINE: ;画框 MOV DI,(18*80+10)*2;从第 19 行的第十一个字符开始画框,di 中为像素数,每个像素数为 4 位,一 个字符对应 4 个像素 MOV AL,201 ;201 对应横线左角, MOV AH,3;左角的颜色 STOSW;以 di 作为偏移地址,以 al 中的字符作为输入字符,以 ah 为颜色,向缓冲区中填充字符,显示 该 字符 MOV CX,60-2;第 60 个为

13、右脚 MOV AH,1;双横线为蓝色 MOV AL,205 ; REP STOSW MOV AH,3 MOV AL,187 ;右上角 STOSW ADD DI,20*2;第 20 行的第十一个字符,10+60+20=90,下一行的第十一个字符 MOV AL,186 ;竖线 STOSW MOV LEFT,DI;将竖线后第一个空格像素地址送给 left MOV CX,60-2;填充 58 个空格, MOV AL,20H ; REP STOSW MOV AL,186 ; STOSW ADD DI,20*2;第 21 行的第 10 个数 MOV AL,200 ;左下角 STOSW MOV CX,60-

14、2;填充横线 MOV AL,205 REP STOSW MOV AL,188 ;右下角 STOSW RET ASDF: MOV DI,LEFT;将第一个空格地址,送到 di ADD DI,60-2 ;将矩形框的中间位置给 di,di 为像素值 MOV POSI,DI MOV AL,STR0+1;将实际输入的字符数送给 al CBW;al 中的字符扩展到 ax,ah 全为 0 TEST AX,1;判断奇数和偶数 JZ OUSHU;偶数跳转 MOV FLAG,1;奇数 flag=1 OUSHU: MOV BP,AX ; DEC BP;偶数实际长度减 1 INC AX;实际长度加 1 SHR AX,

15、1,逻辑右移,实际长度除 2.省略余数 LEA DX,BUF ;字符串实际位置首地址给 dx ADD BP,DX ;将字符串的最后一个字符位置给 bp MOV BX,AX ;字符串一半的长度给 bx REP: MOV AH,50H ;字符的颜色 MOV CX,TIMES ;每次显示字符数送给 cx MOV SI,DX;字符串首地址给 si MOV DI,POSI;将矩形框中间位置送给 di 1: LODSB ;将字符串送 al 中 STOSW;将 al 中的字符写入到 di 对应的像素位置处 LOOP 1 CALL DELAY;延时 1s CMP BX,1;判断是否为两个字符 JNZ CONT

16、;不是两个字符跳转 CMP FLAG,0;判断字符长度是奇数和偶数 JNZ YYY;奇数跳转 CONT: MOV SI,BP;最后一个字符地址给 si MOV CX,TIMES ;每次显示的字符数给 cx 2: LODSB ; STOSW LOOP 2 CALL DELAY YYY: DEC BX JZ DONE INC TIMES SUB POSI,2 DEC BP JMP REP DONE: MOV TIMES,1 RET TIMES DW 1 ; FLAG DB 0 POSI DW 0 MENU DB 5 DUP(0AH) DB 31 DUP( ),6,MAIN MENU,6,0DH,0

17、AH DB 25 DUP( ),201,4,21 DUP(196),4,187,0DH,0AH DB 25 DUP( ),186, 1.INPUT A STRING .,20H,186,0DH,0AH DB 25 DUP( ),186, 2.DISPLAY MODEL . ,20H,186,0DH,0AH DB 25 DUP( ),186, 3.RETURN TO DOS . ,20H,186,0DH,0AH DB 25 DUP( ),200,4,21 DUP(196),4,188,0DH,0AH DB 28 DUP( ),CHOICE(1,2,3):$ TIPS DB 0DH,0AH,9,I

18、NPUT A STRING .,0DH,0AH,9,$ MESG DB 0DH,0AH,0DH,0AH,9,PRESS ANY KEY TO EXIT .$ LEFT DW 0 STR0 DB 50;字符串的最大长度 DB 0;实际输入字符串长度 BUF DB 50 DUP(0);实际字符串的地址 CODE ENDS END START 七实施结果七实施结果 选择输入字符串后,可以输入一个字符串。该字符串即为动画显示时所显示的字符串。字 符串从无到有,从中间向两边伸展,直至出来完整的字符串。当按下 R 键后重复移动的动作, 直到按下 Q 键,停止字符串动画显示返回到主菜单。 运行效果: 八、完

19、成软件的关键技术八、完成软件的关键技术 在本程序中,使用了 9 号,1 号,10 号 DOS 系统功能调用,分别用来实现显示字符串,键 盘输入字符,输入字符串的功能;还使用了 BIOS 功能调用,其中有 INT 16H 中的 0 号,实现 从键盘读字符的功能,INT 1AH 中的 2 号,实现读实时钟的功能。 九、我写的部分九、我写的部分 我主要负责矩形框和延时程序。 延时部分: DELAY PROC ;1 秒延时 PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,2 ;读取时钟将秒数送到 DH INT 1AH MOV BL,DH ;把 DH 中的数给 BL T:

20、MOV AH,2 INT 1AH CMP DH,BL;判断当前秒数和 BL 中保存的秒数是否一致,不一致则跳出 JZ T ; POP DX POP CX POP BX POP AX RET DELAY ENDP 画矩形框的部分: LINE: ;画框 MOV DI,(18*80+10)*2;从第 19 行的第十个字符开始画框,di 中为像素数,每个像素数为 4 位, 一个字符对应四个像素 MOV AL,201 ;201 对应横线左角, MOV AH,3;左角的颜色 STOSW;以 di 作为偏移地址,以 al 中的字符作为输入字符,以 ah 为颜色,向缓冲区中填充字 符,显示该字符 MOV CX,60-2;第 60 个为右脚 MOV AH,1;双横线为蓝色 MOV AL,205 ; REP STOSW MOV AH,3 MOV AL,187 ;右拐叫, STOSW ADD DI,20*2;第 20 行的第十个字符,10+60+20=90,下一行的第十个字符 MOV

温馨提示

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

评论

0/150

提交评论