ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:91.69KB ,
资源ID:30287848      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30287848.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(动画心课程设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

动画心课程设计.docx

1、动画心课程设计郑州航空工业管理学院微机原理课程设计说明书 2012 级 电气工程及其自动化 专业 972 班级题 目 动画心 姓 名 邢爱中 学号 120697231 指导教师 王义琴 职称 二一二年 十二 月 十五 日摘要:此次微机原理课程说明书根据设计任务阐述动画心汇编程序的设计基本思想与方案,绘制程序流程图,运用8086CPU提供的指令、伪指令、宏指令及DOS,BIOS功能调用编写程序源代码,同时给出说明注释。并利用计算机提供的软件调试工具对所编写程序进行调试,记录下整个调试分析的过程与运行结果。关键词:动画心、汇编语言、方案、程序原代码、调试。一.动画心的基本原理本程序主要是利用BIO

2、S功能调用的10H中断类型实现的。利用其12号功能,设置像素的颜色、坐标和个数,从而画出图形需要的线段,如画方框、画对角线、画水平垂直线,以及采用行、列坐标连续写像素的方法填充图形等。画完图形之后延时,清屏。同时,利用DOS系统功能调用的08号功能,从键盘输入字符。如果是任意键,则进入图形显示;如果是空格键,则改变“心”的大小;如果是其它键,则重新显示整个图形;如果是“q”键,则退出。二、设计方案2.1.设计内容设计一彩色动画的程序,一个颜色方框从四周向中间由大变小,并留下痕迹,中心位置出现一颗红“心”。 2.2.设计要求(1)按任意键进入图形显示;(2)按空格键重复出现“心”;(3)按回车键

3、将重复整个图形;(4)q键退出程序。2.3.设计思路本程序主要是利用BIOS功能调用的10H中断类型实现的。利用其12号功能,设置像素点的颜色、坐标和个数,从而画出图形需要的线 段,如画方框、画斜线、画水平垂直线,以及采用行、列坐标连续写像素的方法填充图形等。画完图形之后延时,清屏。同时,利用dos功能调用的08号功能,从键盘输入字符。如果是任意键,则进入图形显示;如果是回车键,则重新显示这个图形;如果是空格键,则改变“心”的大小;如果是“q”键,则退出。该系统只是简单的运用字符进行设计组成相应的图像,运用masm编程工具、link连接程序在debug环境下进行调试而成。在系统中界面中,首先是

4、按下任意键进入动画心界面。然后会按Q键退出的提示信息,其中包含2个隐藏信息:按空格键刷新心型图案,来实现动态心;按其余键是重复动画心的显示。其中主要运用的指令有:push(压入堆栈);Pop(从堆栈中释放首地址的内容);sub(减法指令);add(加法指令);mov(传送指令);call(过程调用指令);lea(地址传送指令);inc(加一指令);cmp(比较指令);jmp(跳转指令);jnz(条件跳转指令)。 3.1主程序设计先设置图形显示方式为320*200彩色图形方式、背景色为蓝色和设置彩色组,再利用其12号功能,设置像素点的颜色、坐标和个数,从而画出图形需要的线段,如画方框、画斜线、画

5、水平垂直线,以及采用行、列坐标连续写像素的方法填充图形等。画完图形之后延时,清屏。同时,利用dos功能调用的08号功能,从键盘输入字符。如果是任意键,则进入图形显示;如果是回车键,则重新显示这个图形;如果是空格键,则改变“心”的大小;如果是“q”键,则退出。在编写主程序时遇到了一些问题,我们在运行时发现了错误,后来发现在调用dos的08号功能时时出现了错误,通过查看资料发现在调用dos的08号功能时应该在AL中存放输入字符的ASCII码 ,而我们直接输入的字符。在画方框、对角线、任意水平线时先是设置cx,bx,dx各个寄存器赋予不同的初值,但我们在开始的时候没有把初值设置好,结果造成了程序的出

6、错,后来经过调整才保证了程序的正常运行。为了方便了解系统的操作过程,特画出改程序的系统流程图。动画心的主程序流程图见图1。3.2 图形显示设计由程序要实现的显示效果可见,程序中要引入多种图案,具体由方框、对角线、任意水平垂直线、“心”等来形成整个图案。所以要在程序中出现多次各种图案来填充整个图形。(1)画方框进入显示动画心的界面时,首先出现的是方框。采用了mov,sub,inc,cmp,jnz等指令进行了定义,来显示出方框的逐步显示。先是设置cx,dx,bx各个寄存器不同的初值,即设置像素点的颜色、坐标和个数,接着由大到小画方框,每画一个方框之前,各个寄存器都要设置不同的初值。(2) 画对角线

7、和画方框差不多,每画一条对角线之前各个寄存器也要设置不同的初值。(3) 画任意水平垂直线画十字线之前,各个寄存器如cx,bx,dx也需要设定不同的初值。(4) 由大到小画方框由程序要显示的效果来分析,还需要再一次引入大大小小的方框,故还需要再一次由大到小画方框。(5)填充辅助图形画好以后,需要采用行、列坐标连续写像素的方法来填充图形,达到统一合成的效果。(6) 画心由程序显示的效果来看,最关键的就是画心这个主要的图形了。4.子程序的设计4.1 延时子程序先push cx,dx,即先让cx,dx进栈,接着设置dx寄存器的初值为25,利用其12号功能设置cx的初值为2801,利用其13号功能使之循

8、环。在进行循环次数计数(即dxdx-1)后,判断循环是否结束:如(dx)0,继续循环,转移到目标地址d12所在的指令,否则顺序执行。然后dx,cx顺序出栈。最后返回。在编写延时子程序时,由于我没有压栈dx和cx,没有把外循环和内循环设置好,在运行程序时出现了错误,后来我对dx和cx进行压栈,把循环次数和循环语句设置好了,才把延时子程序编写好。为了更好的了解延时子程序,我画了延时子程序的流程图见图2。 图2 延时子程序流程图4.2清屏子程序先设置功能号al及寄存器bx,cx,dx的初值,接着进入line循环程序。在line循环程序中,先清除缓冲区并请求指定的输入功能,接着利用BIOS功能调用的1

9、0H中断类型实现显示器输出控制。在进行循环次数计数(即cxcx+1)后,判断循环是否结束:如(cx)320,则继续循环,转移到目标地址line所在的指令,否则再设置寄存器cx的初值,在进行循环次数计数(dxdx+1)后,判断循环是否结束:如(dx)200,则继续循环,转移到目标地址line所在的指令,否则顺序执行。最后返回。在编写清屏子程序时遇到的最大困难就是编写line循环程序了,我没有把该循环程序的循环次数设置正确,后来经过一点点的改正才编写正确,(cx)320继续循环,转移到目标地址line所在的指令,否则再设置寄存器cx的初值,在进行循环次数计数(dxdx+1)后,判断循环是否结束。为

10、了更好的了解清屏子程序,我画了该程序的流程图见图3。 图3 清屏子程序流程图三、软件设计主程序:data segmentbuff1 db db db buff2 db db data endsstack segment stack stack endscode segmentmain proc far assume cs:code,ds:datastart: push ds sub ax,ax push ax mov ax,data mov ds,ax mov ah,00 mov al,04 int 10h mov ah,0bh mov bh,00 mov bl,1 int 10h mov a

11、h,0bh mov bh,1 mov bl,2 int 10h mov dx,offset buff1 mov ah,09 int 21h mov ah,08 int 21h call clear sss: call text mov di,2 mov al,1 mov cx,70 mov dx,20 mov bx,160 call box mov cx,71 mov dx,21 mov bx,158again: mov al,1 mov di,0 call box call delay mov al,0 mov di,0 call box inc cx inc dx sub bx,2 cmp

12、 cx,94 jnz again mov di,0 mov cx,95 mov dx,45 mov al,1 mov bx,110 call box mov cx,96 mov dx,46 mov bx,108again_00: mov al,1 mov di,0 call box call delay call delay mov al,0 mov di,0 call box inc cx inc dx sub bx,2 cmp cx,114 jnz again_00 mov cx,115 mov dx,65 mov al,1 mov bx,70 call box mov cx,116 mo

13、v dx,66 mov bx,68again_01: mov al,1 mov di,0 call box call delay call delay mov al,0 mov di,0 call box inc cx inc dx sub bx,2 cmp cx,129 jnz again_01 mov di,2 mov al,1 mov cx,130 mov dx,80 mov bx,40 call box mov di,2 mov al,3 mov si,0 mov cx,71 mov dx,21 mov bx,59 call xie_line mov cx,171 mov dx,121

14、 mov bx,59 call xie_line mov si,1 mov cx,71 mov dx,179 mov bx,59 call xie_line mov cx,171 mov dx,79 mov bx,59 call xie_line mov cx,150 mov dx,20 mov si,0 mov bx,60 call draw_line mov cx,150 mov dx,120 mov bx,60 call draw_line mov cx,70 mov dx,100 mov si,1 mov bx,60 call draw_line mov cx,170 mov dx,1

15、00 mov bx,60 call draw_line mov cx,149 mov dx,120mov al,2mov bx,60mov si,0call draw_linemov si,1 mov cx,70 mov dx,60 mov bx,60 call mid_line mov cx,170 mov dx,110 mov bx,60 call mid_line mov si,2 mov cx,110 mov dx,20 mov bx,30 call mid_line mov cx,160 mov dx,120 mov bx,30 call mid_line mov si,3 mov

16、cx,70 mov dx,140 mov bx,60 call mid_line mov cx,170 mov dx,90 mov bx,60 call mid_line mov si,4 mov cx,110 mov dx,180 mov bx,30 call mid_line mov cx,160 mov dx,80 mov bx,30call mid_linemov cx,149mov dx,120mov al,2mov bx,60mov si,0call draw_lineheart_: 画心主程序call cls_box call heart mov ah,08 int 21hcmp

17、 al,q jz okcmp al,20h jz heart_call clear jmp sss ok: retmain endp code ends end start画斜线子程序:Mid_line proc near add bx,cxcmp si,2 jz midline_2cmp si,3 jz midline_3cmp si,4 jz midline_4midline_1: mov ah,0ch int 10hinc dx add cx,2 cmp cx,bx jne midline_1 jmp exit_linesmidline_2: mov ah,0ch int 10hadd

18、dx,2 inc cx cmp cx,bxjne midline_2jmp exit_lines midline_3: mov ah,0ch int 10hdec dx add cx,2 cmp cx,bxjne midline_3jmp exit_linesmidline_4: mov ah,0chint 10hsub dx,2 inc cx cmp cx,bxjne midline_4exit_lines: ret mid_line endp 扩展程序:改动程序使动画方框变化从由大变小改成方框变化由小变大,并同时改变运动轨迹的变化也是由小到大。以下程序代码只写出需改动的一小段程序,其它不变

19、与原程序相同。mov di,2 mov al,1 mov cx,130 mov dx,80 mov bx,40 call box mov cx,129 mov dx,79 mov bx,42again: mov al,1 mov di,0 call box call delay mov al,0 mov di,0 call box dec cx dec dx add bx,2 cmp cx,116 jnz again mov cx,115 mov dx,65 mov al,1 mov bx,70 call box mov cx,114 mov dx,64 mov bx,72again_01:

20、mov al,1 mov di,0 call box call delay call delay mov al,0 mov di,0 call box dec cx dec dx add bx,2 cmp cx,96 jnz again_01 mov di,0 mov cx,95 mov dx,45 mov al,1 mov bx,110 call box mov cx,94 mov dx,44 mov bx,112again_00: mov al,1 mov di,0 call box call delay call delay mov al,0 mov di,0 call box dec

21、cx dec dx add bx,2 cmp cx,71 jnz again_00mov di,2 mov al,1 mov cx,70 mov dx,20 mov bx,160 call box 五 参考文献1周佩玲、彭虎、傅忠谦,微机原理与接口技术.北京:电子工业出版社,2005.42于春凡、朱耀庭,宏汇编语言程序设计.天津:南开大学出版社,1996.6第一版3马瑞芳,汇编语言程序设计.西安:西北工业大学出版社,2002.3第一版4齐志儒,高福祥.汇编语言程序设计M,第4版. 沈阳:东北大学出版社, 2008.15沈美明,温冬婵.IBMPC汇编语言程序设计M,第3版.北京:清华大学出版社,

22、 2007.76李心广,汇编语言与计算机系统组成M,第1版.北京:机械工业出版社, 2010.17马瑞芳,汇编语言程序设计M,第一版.西安:西北工业大学出版社,2002.3设计总结: 在做本次课程设计中,我们查了大量的资料。为了让我们的设计更加完善,我们也遇到了一些问题,在设计一些子程序的时候遇到了一些困难,在编写延时子程序时,由于我没有压栈dx和cx,没有把外循环和内循环设置好,在运行程序时出现了错误,后来我对dx和cx进行压栈,把循环次数和循环语句设置好了,才把延时子程序编写好,在编写清屏子程序时遇到的最大困难就是编写line循环程序了,我没有把该循环程序的循环次数设置正确,后来经过一点点

23、的改正才编写正确,(cx)320继续循环,转移到目标地址line所在的指令,否则再设置寄存器cx的初值,在进行循环次数计数(dxdx+1)后,判断循环是否结束。同时在编写主程序时也遇到了一些问题,我们在运行时发现了错误,后来发现在调用dos的08号功能时时出现了错误,通过查看资料发现在调用dos的08号功能时应该在AL中存放输入字符的ASCII码 ,而我们直接输入的字符。在画方框、对角线、任意水平线时先是设置cx,bx,dx各个寄存器赋予不同的初值,但我们在开始的时候没有把初值设置好,结果造成了程序的出错,后来经过调整才保证了程序的正常运行。经过一周时间的实训,不仅让我把所学的理论知识与实践相结合起来,也提高了我们的实际动手能力和独立思考能力,虽然我们花了许多时间,但我相信我们得到的也会很多。指导教师评语:课程设计成绩: 指导教师签名: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1