微机原理课程设计-制作奥运五环效果.doc_第1页
微机原理课程设计-制作奥运五环效果.doc_第2页
微机原理课程设计-制作奥运五环效果.doc_第3页
微机原理课程设计-制作奥运五环效果.doc_第4页
微机原理课程设计-制作奥运五环效果.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

南通大学电气工程学院微机原理课程设计报 告 书软件课 题 制作奥运五环效果 班 级 学 号 姓 名 指导 教师 日 期 2011-11-23 一、奥运五环效果1.1 设计目的1.巩固和加深课堂所学知识;2.学习掌握一般的软件的设计方法和查阅、运用资料的能力;3.通过奥运五环效果的设计与制作,深入了解与掌握dos环境下图形生成方法。1.2 设计内容和要求查找资料,了解汇编语言编写图形方法,中点bresenharm算法原理,成像原理。生成奥运五环效果,并定时中断实现变色或闪烁。1.3 设计原理1.3.1 dos环境下图形显示机理bios 提供了相当丰富的显示功能调用,其显示功能集中在10h 号中断中,共有16 种不同的功能,每个功能有一个编号,对应的编号为000fh。当调用某个显示功能时,应根据需要设置好入口参数,把功能号置入ah寄存器中,然后发中断指令“int10h”。与图形显示有关的子功能主要集中在如表1 几个功能号。在图形方式下,屏幕以像素为单位。中分辨率下,屏幕可分成320*200=64000个像素点,每个像素有四种不同的显示颜色,背景有16种颜色;高分辨率下,屏幕分成640*200=128000 个像素点,只支持黑白两色。任何一个图形都可以看作是由点组成的,这些像素点“点亮”或“熄灭”,就构成相应的图形。1.3.2 bresenham画圆算法bresenham画圆算法又称中点画圆算法,与bresenham 直线算法一样,其基本的方法是利用判别变量来判断选择最近的像素点,判别变量的数值仅仅用一些加、减和移位运算就可以计算出来。为了简便起见,考虑一个圆心在坐标原点的圆,而且只计算八分圆周上的点,其余圆周上的点利用对称性就可得到。 圆有“八对称性”,如下图所示。 显然,我们只需要知道了圆上的一个点的坐标 (x, y) ,利用八对称性,我们马上就能得到另外七个对称点的坐标。 给出圆心的坐标(0, 0)和半径,求圆图像的最佳逼近点。 我们求的八分之一圆孤为(0, r) -(r2,r2),可知最大位移方向是x方向,x0 = 0, y0 = r,每次对x自增,然后判断y是否减1,直到x = y为止(从点(0, r)到圆的八分之一处就有这种情况)。误差量由(x, y) = x2 + y2 - r2给出。 先找递推关系,若当前d = f(x + 1, y - 0.5) 0,则y须减1,则下一d值为d = f(x + 2, y - 1.5) = (x + 2)2 + (y - 1.5)2 - r2 = d + 2x - 2y + 5,若当前d = f(x + 1, y - 0.5) 0即d 0.25,这和d 0等价,所以d取初值1 - r。1.4 程序流程图与程序代码1.41 流程图确定第一个圆的圆心(x0,y0),半径r设置显示方式依次确定正面五环各环的像素值即颜色,调用单环绘制程序,完成正面五环定时中断否?依次确定反面五环各环的像素值即颜色,调用单环绘制程序,完成反面五环1.42 程序源代码data segment m dw ? n db ? ;像素颜色值 r dw 30 ;五环半径 x1 dw 80 ;第一个圆的圆心 y1 dw 80 x2 dw ? y2 dw ? x3 dw ? y3 dw ? x4 dw ? y4 dw ? x dw ? y dw ? d dw ? a dw ? b dw ? data ends code segment assume cs:code,ds:data main proc far start: mov ax,data mov ds,ax ;mov si,0 mov di,0 mov si,x1 mov x3,si mov si,y1 mov y3,si mov si,0 call circulmain endp ;*五环绘制子程序* circul proc near push si mov ah,0 mov al,0dh int 10h ;*依次绘制正面五环* front: mov n,0eh;第一个环,黄色 mov x,0 mov bx,r mov y,bx mov si,x3 mov x1,si mov si,y3 mov y1,si call single_circle mov n,0ah;第二个环,绿色 mov x,0 mov bx,r mov y,bx mov si,x3 mov x1,si mov si,y3 mov y1,si add y1,bx add y1,bx shr bx,1 add y1,bx call single_circle mov n,04h;第三个环,红色 mov x,0 mov bx,r mov y,bx mov si,x3 mov x1,si mov si,y3 mov y1,si add y1,bx add y1,bx add y1,bx add y1,bx add y1,bx call single_circle mov n,09h;第四个环,蓝色 mov x,0 mov bx,r mov y,bx mov si,x3 mov x1,si mov si,y3 mov y1,si add x1,bx add y1,bx shr bx,1 shr bx,1 add y1,bx call single_circle mov n,08h; 第五个环,灰色 mov x,0 mov bx,r mov y,bx mov si,x3 mov x1,si mov si,y3 mov y1,si add x1,bx add y1,bx add y1,bx add y1,bx shr bx,1 add y1,bx shr bx,1 add y1,bx call single_circle jmp back;*绘制背面面各环* back: mov n,04h;第一个环,红色 mov x,0 mov bx,r mov y,bx mov si,x3 mov x1,si mov si,y3 mov y1,si call single_circle mov n,08;第二个环,灰色 mov x,0 mov bx,r mov y,bx mov si,x3 mov x1,si mov si,y3 mov y1,si add y1,bx add y1,bx shr bx,1 add y1,bx call single_circle mov n,09h;第三个环,蓝色 mov x,0 mov bx,r mov y,bx mov si,x3 mov x1,si mov si,y3 mov y1,si add y1,bx add y1,bx add y1,bx add y1,bx add y1,bx call single_circle mov n,0ah;第四个环,绿色 mov x,0 mov bx,r mov y,bx mov si,x3 mov x1,si mov si,y3 mov y1,si add x1,bx add y1,bx shr bx,1 shr bx,1 add y1,bx call single_circle mov n,0eh; 第五个环,黄色 mov x,0 mov bx,r mov y,bx mov si,x3 mov x1,si mov si,y3 mov y1,si add x1,bx add y1,bx add y1,bx add y1,bx shr bx,1 add y1,bx shr bx,1 add y1,bx call single_circle pop sicall delayjmp frontcircul endp ;*逐步进给调整坐标,单环绘制* single_circle proc near mov si,1 sub si,r mov d,si ;d=1-r,x=0 lin3: mov si,x ;si=x mov di,y ;di=y=r add si,x1 add di,y1 mov dx,si ;dx=si+x1 mov cx,di ;cx=di+y1 mov si,x ; mov di,y cmp si,di ;比较x与y,xy则八分之一圆弧绘制结束 jg lin call hua ;xy cmp d,0 ; jge lin1 ;mov si,2 mov ax,0 mov ax,si imul x mov si,ax add si,3 add d,si lin2: inc x jmp lin3 lin1: mov si,2 mov ax,0 mov ax,si mov di,x sub di,y imul di mov si,ax add si,5 add d,si dec y jmp lin2 lin: ret single_circle endp huadian proc near ;写像素,al=颜色值,bh=页号 mov ah,0ch mov al,n mov bh,0 int 10h ret huadian endp ;*八分法绘制圆环* hua proc near call huadian ;画第一点 (x,y) mov x2,dx mov y2,cx sub dx,x1 sub cx,y1 xchg dx,cx add dx,x1 add cx,y1 call huadian ;画对称点(y,x) mov dx,x2 mov cx,y2 sub cx,y1 sub dx,x1 xchg dx,cx mov m,dx add m,dx sub dx,m add dx,x1 add cx,y1 call huadian ;画点(-y,x) sub cx,y1 mov m,cx add m,cx sub cx,m add cx,y1 call huadian ;画点(-y,-x) mov dx,x2 mov cx,y2 sub dx,x1 sub cx,y1 mov m,cx add m,cx sub cx,m add cx,y1 add dx,x1 call huadian ;画点 (x,-y) sub dx,x1 mov m,dx add m,dx sub dx,m add dx,x1 call huadian ;画点(-x,-y) mov dx,x2 mov cx,y2 sub dx,x1 sub cx,y1 mov m,dx add m,dx sub dx,m add dx,x1 add cx,y1 call huadian ;画点 (-x,y) mov dx,x2 mov cx,y2 sub dx,x1 sub cx,y1 xchg dx,cx mov m,cx add m,cx sub cx,m add dx,x1 add cx,y1 call huadian ;画点 (y,-x) call delay ret hua endp ;*延时* delay proc near push dx push cx mov

温馨提示

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

评论

0/150

提交评论