




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学微机原理与接口技术课程设计说明书学 号: 微机原理及接口技术课程设计题 目可爱小动画程序学 院专 业班 级姓 名指导教师2014年12月28日课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 自动化学院 题 目: 可爱小动画程序 初始条件: 本动画先显示一个方框向中间由大变小,最后出现一个红心, 按Q退出程序。要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1) 设计任务及要求分析(2) 方案比较及认证说明(3) 系统原理阐述(4) 硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5) 软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6) 调试记录及结果分析(7) 总结(8) 参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图目录摘要11.课程设计的目的及要求21.1课程设计的要求21.2课程设计的目的22.设计要求分析22.1设计思路22.2汇编程序开发过程22.3汇编语言设计中主要指令33.程序设计方案33.1设计功能33.2设计方案43.3动画程序流程图44.汇编语言程序设计64.1显示方案设计64.2主程序设计64.3子程序设计65.结果分析116.总结12参考文献13附录1 运行效果图14附录2 程序源代码16摘要 本设计实现了用汇编语言编制一个小动画,该动画由几十个像素点构成。在计算机图形设计中,通过对各像素点的移动来实现动画的播放。而处理这些像素点又需要大量的指令。汇编语言由于其就速度而言远比其他语言程序快得多,所以具备一定优势。 本文是着重通过对动画程序的设计实现汇编语言程序设计。阐述动画汇编程序的设计思路与方案,绘制程序流程图,运用8086CPU提供的指令、伪指令、宏指令及DOS,BIOS功能调用编写程序源代码,同时给出说明注释。并用计算机提供的软件调试工具对所编写程序进行运行调试。 关键字:动画 汇编语言 DOS BIOS可爱小动画程序1.课程设计的目的及要求1.1课程设计的要求本次课程设计要求编写一个完整的汇编程序程序来实现小动画。动画要求先显示一个距形由大变小,最后屏幕上出现一个红色心形图案,按Q键退出程序。为了更方便的观看动画,还需设计操作提示语以及动画的循环播放功能。1.2课程设计的目的微机原理课程设计是自动化专业的专业必修课的实践环节。本课程设计的主要目的是掌握汇编程序设计的基本方法,并掌握汇编程序设计中常见错误的排除和避免,提供一个既动手又动脑的独立实践机会,将课本上的理论知识和实际有机的结合起来,锻炼分析解决实际问题的能力,从而进一步提高了实践运用的能力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 al=Q? no延时 no 减小矩形面积al=R? yes 是否最小? 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加1DX加1CX=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 RETDRAW_LINE ENDP(2)延时子程序先pushcx,dx,即先让cx,dx进栈,接着设置dx寄存器的初值为2500,利用利用BIOS功能调用的12号功能设置cx的初值为2801,利用其13号功能使之循环。在进行循环次数计数(即dxdx-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 RETDELAY ENDP (3)清屏子程序先设置功能号al及寄存器bx,cx,dx的初值,然后进入line循环程序。在line循环程序中,先清除缓冲区并请求指定的输入功能,接着利用BIOS功能调用的10H中断类型实现显示器输出控制。在进行循环次数计数(即cxcx+1)后,判断循环是否结束:如(cx)320,则继续循环,转移到目标地址line所在的指令,否则再设置寄存器cx的初值,在进行循环次数计数(dxdx+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 RETCLEAR ENDP5.结果分析 由于本程序需要使用BIOS,而目前的主流操作系统win7无法兼容,所以只好在xp系统上本程序,具体运行效果图见附录1。在运行过程中,首先出现提示语,然后按下任意一按键,动画开始,可以看见一个大矩形非常圆滑的逐渐变为小矩形,最后小矩形消失出现一个红色心形。此时按下R键动画重新播放,按下Q键程序退出。经验证,本程序运行正常,基本达到要求。6.总结在本次课程设计中,大部分都是运用的都是微机原理设计与接口技术中所涉及到的汇编知识,但是由于设计需要使用BIOS中断知识,在学习新的知识以及使用的过程中遇到了很大的问题,但是经过不断的调试,还是解决了大部分困难,成功将程序调试出来了。通过本次的课程设计我对汇编语言有了更好的认识,提高了自己的能力,虽然本次的课程设计综合度较高,没有涉及硬件,但实施起来还是给了我们很大的难度。在调试过程中,出现了红心一直出现的情况,后经检查发现显示字符子程序没有以RET结尾,导致显示错误,经改正解决问题。在本次课程设计中,收获颇多。参考文献1 李珍香,刘红梅,赵润林,汇编语言课程设计案例精编M,北京,中国水利水电出版社,2004,42 周佩玲、彭虎、傅忠谦,微机原理与接口技术.北京,电子工业出版社,2005.4 3 陆忠华,汇编语言课程设计M,北京,科学出版社,19934 马维华,微机原理与接口技术,北京,科学出版社,20055 马瑞芳,王会燃,微机原理与接口技术要点与分析,西安,西安交通大学出版社,20066沈美明IBM-PC汇编语言及程序设计实验教程.清华大学出版社,20017郑初华主编汇编语言、微机原理及接口技术.北京,电子工业出版社出版社,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 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: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: ;退出分支程序 RETMAIN 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 RETDRAW_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 RETBOX 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 RETTEXT 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 MO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 作业程序指南
- 航海船舶防火安全制度
- 羊绒大衣秋冬搭配方案
- 可持续包装制作规定
- 基因突变机制与进化适应规划
- 服装生产流程控制方案
- 网络安全与网络言论真实化
- 2025云南丽江玉龙纳西族自治县幼儿园招聘公益性岗位教师3人笔试备考试题及答案解析
- 家电维修效率提升方法总结
- 考研英语阅读考点剖析与解题技巧
- 2022年东台市城市建设投资发展集团有限公司招聘笔试题库及答案解析
- 汉书-张骞传课件
- 民法典侵权责任编课件
- 市政道路养护工程监理工作
- 2022年初中化学新课标测试
- 练平舌音和翘舌音的绕口令
- 校企合作讲座精品PPT课件
- 医学检验师考试试题
- 煤矿电缆与电缆敷设标准
- T∕CATCM 008-2019 阿胶质量规范
- 防水堵漏施工合同
评论
0/150
提交评论