首页 可爱小动画汇编程序设计

可爱小动画汇编程序设计

举报
开通vip

可爱小动画汇编程序设计 学 号: 微机原理及接口技术 课程设计 题 目 可爱小动画程序 学 院 专 业 班 级 姓 名 指导教师 2014 年 12 月 28 日 课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位: 自动化学院 题 目: 可爱小动画程序 ...

可爱小动画汇编程序设计
学 号: 微机原理及接口技术 课程设计 题 目 可爱小动画程序 学 院 专 业 班 级 姓 名 指导教师 2014 年 12 月 28 日 课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位: 自动化学院 题 目: 可爱小动画程序 初始条件: 本动画先显示一个方框向中间由大变小,最后出现一个红心, 按Q退出程序。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1) 设计任务及要求分析 (2) 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 比较及认证说明 (3) 系统原理阐述 (4) 硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明 (5) 软件设计课题需要说明:软件思想, 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图,源程序及程序注释 (6) 调试记录及结果分析 (7) 总结 (8) 参考资料 (9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图 目录 摘要 1 1.课程设计的目的及要求 2 1.1课程设计的要求 2 1.2课程设计的目的 2 2.设计要求分析 2 2.1设计思路 2 2.2汇编程序开发过程 2 2.3汇编语言设计中主要指令 3 3.程序设计方案 3 3.1设计功能 3 3.2设计方案 4 3.3动画程序流程图 4 4.汇编语言程序设计 6 4.1显示方案设计 6 4.2主程序设计 6 4.3子程序设计 6 5.结果分析 11 6.总结 12 参考文献 13 附录1 运行效果图 14 附录2 程序源代码 16 武汉理工大学《微机原理与接口技术》课程设计说明书 摘要 本设计实现了用汇编语言编制一个小动画,该动画由几十个像素点构成。在计算机图形设计中,通过对各像素点的移动来实现动画的播放。而处理这些像素点又需要大量的指令。汇编语言由于其就速度而言远比其他语言程序快得多,所以具备一定优势。 本文是着重通过对动画程序的设计实现汇编语言程序设计。阐述动画汇编程序的设计思路与方案,绘制程序流程图,运用8086CPU提供的指令、伪指令、宏指令及DOS,BIOS功能调用编写程序源代码,同时给出说明注释。并用计算机提供的软件调试工具对所编写程序进行运行调试。 关键字:动画 汇编语言 DOS BIOS 可爱小动画程序 1.课程设计的目的及要求 1.1课程设计的要求 本次课程设计要求编写一个完整的汇编程序程序来实现小动画。动画要求先显示一个距形由大变小,最后屏幕上出现一个红色心形图案,按Q键退出程序。为了更方便的观看动画,还需设计操作提示语以及动画的循环播放功能。 1.2课程设计的目的 微机原理课程设计是自动化专业的专业必修课的实践环节。本课程设计的主要目的是掌握汇编程序设计的基本 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ,并掌握汇编程序设计中常见错误的排除和避免,提供一个既动手又动脑的独立实践机会,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力,从而进一步提高了实践运用的能力 2.设计要求分析 2.1设计思路 本程序主要是利用BIOS功能调用的10H中断类型实现的。利用其12号功能,设置像素点的颜色、坐标和个数,从而画出图形需要的线段,如画方框、画心等。画完图形之后延时,清屏。同时,利用dos功能调用的08号功能,从键盘输入字符。如果是任意键,则进入图形显示;如果是“R”键,则重新播放动画;如果是“Q”键,则退出。 由于需要在屏幕上显示矩形和心形,所以在进行图形的显示设计时,程序中需要绘制多种图案,具体由方框,点,心等来形成整个图案。为了程序的可阅读性,程序中将绘制基础图案的代码单独列为子程序,如画线子程序,画方框子程序,画点子程序,延时子程序,清屏子程序等。 2.2汇编程序开发过程 汇编语言设计总过程流程图如图2-2所示: 图2-1汇编语言开发总过程流程图 汇编语言程序设计要求综合课上所学的理论知识和汇编语言基础理论,根据设计的要求来充分分析问题,将问题分解成一个一个的简单的环节,以便全面的分析程序来设计汇编语言。设计一个简明、易读、易调试、易维护、执行速度快、占用存储空间尽量少的好程序。 2.3汇编语言设计中主要指令 在整个程序中,主要运用的指令有:push(压入堆栈);Pop(从堆栈中释放首地址的内容);sub(减法指令);add(加法指令);mov(传送指令);call(过程调用指令);lea(地址传送指令);inc(加一指令);cmp(比较指令);jmp(跳转指令);jnz(条件跳转指令)等。 3.程序设计方案 3.1设计功能 本程序运行后的功能有: (1) 程序运行时显示提示信息,按任意键进入动画界面。 (2) 让一个矩形向中心由大变小 (3) 显示心形。 (4) 按“Q”键退出程序。 3.2设计方案 由设计思路制定设计方案。先分别编写画矩形、画点、画心、清屏、延时和显示提示信息的子程序。然后,通过编写主程序来调用这些子程序实现课程设计要求。 可以通过改变BIOS功能调用的10H中断类型的11号功能(BL)的赋值来改变图形与线条以及背景的颜色。 为了使运行的动画人眼看上去是连续的,我们可以根据人眼的反应时间来设置延时程序。通过计算得出延时程序所需的循环的次数,以达到以上目的。计算式为: (人眼的反应时间:响应时间如果超过40毫秒,人眼就会出现运动图像的迟滞现象。) 3.3动画程序流程图 由设计方案画出动画程序流程图如图3-3所示: 完整源程序可见附录2。 开始 设置显示方式 设置背景色,彩色调板 显示提示信息 从键盘输入任意字符 清屏 结束 画矩形 yes noal=Q? 延时 no yes减小矩形面积 al=R? yes是否最小? 从键盘输入字符 no延时 画心 图3 动画程序流程图 4.汇编语言程序设计 4.1显示方案设计 由程序要求实现的显示效果来看,程序中要引入多种图案,具体由矩形、、“心”等图形来形成整个图案。所以要在程序中出现多次画各种图案来填充整个图形,具体步骤如下: (1)画矩形,先是设置cx,dx,bx各个寄存器不同的初值,即设置像素点的颜色、坐标个数,接着由大到小画矩形,画每个矩形之前,各个寄存器都要设置不同的初值。 (2)再由大到小画矩形,同时将上一个矩形用与背景色相同的颜色重新画一遍,即清除大矩形化小矩形,由程序要显示的效果来分析,还需要在中间延时以达到最佳显示效果,故还需要仔细调整延时时间。 (3)画心,画心形图案可以说是整个设计最困难的部分,由于使用画圆算法太过复杂,而所需心形图案并不复杂,所以采用画点的形式拼凑一个红心来达到目的。 4.2主程序设计 根据上图3-3程序的结构流程图设计汇编语言的主程序。 先设置图形显示方式,用点像素形式来显示图形。然后设置背景色和调色板,利用BIOS功能调用的12号功能,设置像素点的颜色、坐标和个数,从而画出图形所需要的线段,如画矩形。完成图形之后延时,清屏。同时,利用DOS系统功能调用的08号功能,从键盘输入字符。如果是任意键,则进入图形显示;如果是“R”键,则重新播放一遍;如果是“Q”键,则退出。 4.3子程序设计 为了实现程序效果,程序中还调用了不少的子程序,如画线子程序、画矩形子程序、画心子程序、延时子程序、清屏子程序。具体分析延时子程序和清屏子程序。 (1) 画线子程序 该子程序入口参数为BX、CX、DX、SI、DI。BX控制画线长度,CX、DX 决定 郑伟家庭教育讲座全集个人独资股东决定成立安全领导小组关于成立临时党支部关于注销分公司决定 起始点,SI控制画线方向,DI控制画线速度(为了更好的观看效果,在程序中DI均为0,即最大画线速度)。程序首先push BX,然后判断SI的值,若为0则将BX与DX相加存入BX中,然后从CX:DX开始循环画像素点,每画一次DX加1,直至DX与BX值相等;若SI为1,则将BX与CX相加存入BX中,然后从CX:DX开始循环画像素点,每画一次CX加1,直至CX与DX值相等,最后返回。其具体流程图如图4-1所示: 开始 保护现场 BX=BX+DX 画点 SI=? CX加1 DX加1 CX=BX? DX=BX? 恢复现场 结束 图4-1画线子程序流程图 子程序代码段如下所示: DRAW_LINE PROC NEAR ;画线子程序 PUSH BX CMP SI,0 JZ V_LINE1 ADD BX,CX H_LINE: ;写像素 MOV AH,0CH INT 10H CMP DI,0 JZ AA0 CMP DI,1 JZ AA1 CALL DELAY AA1: CALL DELAY AA0: INC CX CMP CX,BX JNE H_LINE JMP EXIT_LINE V_LINE1: ADD BX,DX V_LINE: MOV AH,0CH CMP DI,0 JZ BB0 CMP DI,1 JZ BB1 CALL DELAY BB1: CALL DELAY BB0: INT 10H INC DX CMP DX,BX JNE V_LINE EXIT_LINE: POP BX RET DRAW_LINE ENDP (2)延时子程序 先push cx,dx,即先让cx,dx进栈,接着设置dx寄存器的初值为2500,利用利用BIOS功能调用的12号功能设置cx的初值为2801,利用其13号功能使之循环。在进行循环次数计数(即dx→dx-1)后,判断循环是否结束:如(dx)≠0,继续循环,转移到目标地址dl2所在的指令,否则顺序执行。然后dx,cx顺序出栈。最后返回。其具体流程图如图4-2所示: 图4-2延时子程序流程图 延时子程序代码段如下: DELAY PROC NEAR ;延时子程序 PUSH CX PUSH DX MOV DX,2500 DL2: MOV CX,2801 DL3: LOOP DL3 DEC DX JNZ DL2 POP DX POP CX RET DELAY ENDP (3)清屏子程序 先设置功能号al及寄存器bx,cx,dx的初值,然后进入line循环程序。在line循环程序中,先清除缓冲区并请求指定的输入功能,接着利用BIOS功能调用的10H中断类型实现显示器输出控制。在进行循环次数计数(即cx→cx+1)后,判断循环是否结束:如(cx)≠320,则继续循环,转移到目标地址line所在的指令,否则再设置寄存器cx的初值,在进行循环次数计数(dx←dx+1)后,判断循环是否结束:如(dx)≠200,则继续循环,转移到目标地址line所在的指令,否则顺序执行。最后返回。 其具体流程图如图4-3所示: 图4-3清屏子程序流程图 清屏子程序代码段如下: CLEAR PROC NEAR MOV AL,0 MOV BX,0 MOV CX,0 MOV DX,0 LINE: MOV AH,0CH INT 10H INC CX CMP CX,320 JNE LINE MOV CX,0 INC DX CMP DX,200 JNE LINE RET CLEAR ENDP 5.结果分析 由于本程序需要使用BIOS,而目前的主流操作系统win7无法兼容,所以只好在xp系统上本程序,具体运行效果图见附录1。在运行过程中,首先出现提示语,然后按下任意一按键,动画开始,可以看见一个大矩形非常圆滑的逐渐变为小矩形,最后小矩形消失出现一个红色心形。此时按下R键动画重新播放,按下Q键程序退出。经验证,本程序运行正常,基本达到要求。 6.总结 在本次课程设计中,大部分都是运用的都是微机原理设计与接口技术中所涉及到的汇编知识,但是由于设计需要使用BIOS中断知识,在学习新的知识以及使用的过程中遇到了很大的问题,但是经过不断的调试,还是解决了大部分困难,成功将程序调试出来了。 通过本次的课程设计我对汇编语言有了更好的认识,提高了自己的能力,虽然本次的课程设计综合度较高,没有涉及硬件,但实施起来还是给了我们很大的难度。在调试过程中,出现了红心一直出现的情况,后经检查发现显示字符子程序没有以RET结尾,导致显示错误,经改正解决问题。在本次课程设计中,收获颇多。 参考文献 [1] 李珍香,刘红梅,赵润林,汇编语言课程设计案例精编[M],北京,中国水利水电出版社,2004,4 [2] 周佩玲、彭虎、傅忠谦,微机原理与接口技术.北京,电子工业出版社,2005.4 [3] 陆忠华,汇编语言课程设计[M],北京,科学出版社,1993 [4] 马维华,微机原理与接口技术,北京,科学出版社,2005 [5] 马瑞芳,王会燃,微机原理与接口技术要点与分析,西安,西安交通大学出版社,2006 [6]沈美明《IBM-PC汇编语言及程序设计实验教程》.清华大学出版社 ,2001 [7]郑初华主编《汇编语言、微机原理及接口技术》.北京,电子工业出版社出版社,2010.6 附录1 运行效果图 图1 初始画面 图2 运行中的画面(大矩形) 图3 运行中的画面(小矩形) 图4 最后出现的心形图案 附录2 程序源代码 DATA SEGMENT FULL DB 0 BUFF1 DB ' HELLO! ' DB ' IT IS LIUBIWEI PROGRAMMING!' DB' STUDENTNUM:0121211350614' DB ' *****PLEASE PRESS ANY KEY*****$' BUFF2 DB ' *****PLEASE R TO AGAIN*****' DB ' ***** PLEASE Q TO QUIT *****$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV AH,0 ;设置显示方式为320*200彩色图形方式 MOV AL,04H INT 10H MOV AH,0BH ;利用BIOS调用的10H中断类型11号功能设定背景色 MOV BH,0 MOV BL,9 ;通过(BL)的赋值0-15设定颜色,此为蓝色 INT 10H MOV AH,0BH ;设置彩色组 MOV BH,1 MOV BL,2 INT 10H MOV DX,OFFSET BUFF1 ;显示提示信息 MOV AH,09 INT 21H MOV AH,08 ;从键盘输入1个字符,但不送显示器显示 INT 21H SSS1: CALL CLEAR ; 清屏 CALL TEXT ;显示文本 MOV DI,0 MOV AL,1 ;画大矩形 MOV CX,70 ;显示点所在列号 MOV DX,20 ;显示点所在行号 MOV BX,160 ;确定矩形大小 CALL BOX ;调用画方矩形程序 MOV AL,0 CALL BOX MOV CX,71 ;画矩形移动轨迹,使矩形变化看上去是移动的 MOV DX,21 MOV BX,158 AGAIN: ;由大到小画轨迹矩形 MOV AL,1 MOV DI,0 CALL BOX CALL DELAY CALL DELAY MOV AL,0 MOV DI,0 CALL BOX INC CX ;每次轨迹图的行号和列号是自加1,轨迹图是由大变小 INC DX SUB BX,2 ;设定每次轨迹图大小减小的程度 CMP CX,129 ;当轨迹方框大小与下一个方框相等时,退出画轨迹 JNZ AGAIN MOV DI,0 MOV AL,1 ;画小矩形 MOV CX,130 MOV DX,80 MOV BX,40 CALL BOX CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL CLEAR HEART_: CALL TEXT MOV DI,0 CALL HEART ;调用画圆子程序 MOV AH,08 ;从键盘输入一个字符,但不送显示器显示 INT 21H CMP AL,'Q' ;(AL)='Q' 退出 JZ OK CMP AL,'R' JNZ HEART_ JMP SSS1 ;清屏后转去执行SSS的内容,即动画重复 OK: ;退出分支程序 RET MAIN ENDP ;主程序结束 DRAW_LINE PROC NEAR ;画线子程序 PUSH BX CMP SI,0 JZ V_LINE1 ADD BX,CX H_LINE: ;写像素 MOV AH,0CH INT 10H CMP DI,0 JZ AA0 CMP DI,1 JZ AA1 CALL DELAY AA1: CALL DELAY AA0: INC CX CMP CX,BX JNE H_LINE JMP EXIT_LINE V_LINE1: ADD BX,DX V_LINE: MOV AH,0CH CMP DI,0 JZ BB0 CMP DI,1 JZ BB1 CALL DELAY BB1: CALL DELAY BB0: INT 10H INC DX CMP DX,BX JNE V_LINE EXIT_LINE: POP BX RET DRAW_LINE ENDP BOX PROC NEAR ;画矩形子程序 PUSH CX PUSH DX PUSH CX PUSH DX PUSH CX PUSH DX PUSH CX PUSH DX MOV SI,1 CALL DRAW_LINE ;TOP POP DX POP CX ADD CX,BX MOV SI,0 CALL DRAW_LINE ;RIGHT POP DX POP CX MOV SI,0 CALL DRAW_LINE ;LEFT POP DX POP CX MOV SI,1 ADD DX,BX CALL DRAW_LINE ;BOTTOM POP DX POP CX RET BOX ENDP TEXT PROC NEAR ;显示文本信息 MOV BH,0 MOV DH,0 MOV DL,0 MOV AH,2 INT 10H MOV DX,OFFSET BUFF2 MOV AH,09 INT 21H RET TEXT ENDP HEART PROC NEAR MOV CX,136 ;DRAW_HEART MOV DX,93 MOV SI,0 MOV BX,5 MOV AL,2 CALL DRAW_LINE MOV CX,137 ;DRAW_HEART MOV DX,91 MOV SI,0 MOV BX,9 CALL DRAW_LINE MOV CX,138 ;DRAW_HEART MOV DX,90 MOV SI,0 MOV BX,12 CALL DRAW_LINE MOV CX,139 ;DRAW_HEART MOV DX,89 MOV SI,0 MOV BX,14 CALL DRAW_LINE MOV CX,140 ;DRAW_HEART MOV DX,88 MOV SI,0 MOV BX,16 CALL DRAW_LINE MOV CX,141 ;DRAW_HEART MOV DX,88 MOV SI,0 MOV BX,17 CALL DRAW_LINE MOV CX,142 ;DRAW_HEART MOV DX,87 MOV SI,0 MOV BX,19 CALL DRAW_LINE MOV CX,143 ;DRAW_HEART MOV DX,87 MOV SI,0 MOV BX,20 CALL DRAW_LINE MOV CX,144 ;DRAW_HEART MOV DX,87 MOV SI,0 MOV BX,21 CALL DRAW_LINE MOV CX,145 ;DRAW_HEART MOV DX,88 MOV SI,0 MOV BX,21 CALL DRAW_LINE MOV CX,146 ;DRAW_HEART MOV DX,88 MOV SI,0 MOV BX,22 CALL DRAW_LINE MOV CX,147 ;DRAW_HEART MOV DX,89 MOV SI,0 MOV BX,22 CALL DRAW_LINE MOV CX,148 ;DRAW_HEART MOV DX,90 MOV SI,0 MOV BX,22 CALL DRAW_LINE MOV CX,149 ;DRAW_HEART MOV DX,91 MOV SI,0 MOV BX,22 CALL DRAW_LINE MOV CX,150 ;1DRAW_HEART MOV DX,91 MOV SI,0 MOV BX,22 CALL DRAW_LINE MOV CX,151 ;DRAW_HEART MOV DX,90 MOV SI,0 MOV BX,22 CALL DRAW_LINE MOV CX,152 ;DRAW_HEART MOV DX,89 MOV SI,0 MOV BX,22 CALL DRAW_LINE MOV CX,153 ;DRAW_HEART MOV DX,88 MOV SI,0 MOV BX,22 CALL DRAW_LINE MOV CX,154 ;DRAW_HEART MOV DX,88 MOV SI,0 MOV BX,21 CALL DRAW_LINE MOV CX,155 ;DRAW_HEART MOV DX,87 MOV SI,0 MOV BX,21 CALL DRAW_LINE MOV CX,156 ;DRAW_HEART MOV DX,87 MOV SI,0 MOV BX,20 CALL DRAW_LINE MOV CX,157 ;DRAW_HEART MOV DX,87 MOV SI,0 MOV BX,19 CALL DRAW_LINE MOV CX,158 ;DRAW_HEART MOV DX,88 MOV SI,0 MOV BX,17 CALL DRAW_LINE MOV CX,159 ;DRAW_HEART MOV DX,88 MOV SI,0 MOV BX,16 CALL DRAW_LINE MOV CX,160 ;DRAW_HEART MOV DX,89 MOV SI,0 MOV BX,14 CALL DRAW_LINE MOV CX,161 ;DRAW_HEART MOV DX,90 MOV SI,0 MOV BX,12 CALL DRAW_LINE MOV CX,162 ;DRAW_HEART MOV DX,91 MOV SI,0 MOV BX,9 CALL DRAW_LINE MOV CX,163 ;DRAW_HEART MOV DX,93 MOV SI,0 MOV BX,5 CALL DRAW_LINE RET HEART ENDP DELAY PROC NEAR ;延时子程序 PUSH CX PUSH DX MOV DX,2500 DL2: MOV CX,2801 DL3: LOOP DL3 DEC DX JNZ DL2 POP DX POP CX RET DELAY ENDP CLEAR PROC NEAR ;清屏子程序 MOV AL,0 MOV BX,0 MOV CX,0 MOV DX,0 LINE: MOV AH,0CH INT 10H INC CX CMP CX,320 JNE LINE MOV CX,0 INC DX CMP DX,200 JNE LINE RET CLEAR ENDP CODE ENDS END START 1 17
本文档为【可爱小动画汇编程序设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
机构认证用户
金水文库
鑫淼网络科技有限公司主要经营:PPT设计 、课件制作,软文策划、合同简历设计、计划书策划案、各类模板等。公司秉着用户至上的原则服务好每一位客户
格式:doc
大小:219KB
软件:Word
页数:0
分类:企业经营
上传时间:2019-01-29
浏览量:9