微机原理课程设计制作奥运五环效果.doc

上传人:文库蛋蛋多 文档编号:2881206 上传时间:2023-03-01 格式:DOC 页数:14 大小:179KB
返回 下载 相关 举报
微机原理课程设计制作奥运五环效果.doc_第1页
第1页 / 共14页
微机原理课程设计制作奥运五环效果.doc_第2页
第2页 / 共14页
微机原理课程设计制作奥运五环效果.doc_第3页
第3页 / 共14页
微机原理课程设计制作奥运五环效果.doc_第4页
第4页 / 共14页
微机原理课程设计制作奥运五环效果.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《微机原理课程设计制作奥运五环效果.doc》由会员分享,可在线阅读,更多相关《微机原理课程设计制作奥运五环效果.doc(14页珍藏版)》请在三一办公上搜索。

1、南通大学电气工程学院微机原理课程设计报 告 书软件课 题 制作奥运五环效果 班 级 学 号 姓 名 指导 教师 日 期 2011-11-23 一、奥运五环效果1.1 设计目的1.巩固和加深课堂所学知识;2.学习掌握一般的软件的设计方法和查阅、运用资料的能力;3.通过奥运五环效果的设计与制作,深入了解与掌握DOS环境下图形生成方法。1.2 设计内容和要求查找资料,了解汇编语言编写图形方法,中点bresenharm算法原理,成像原理。生成奥运五环效果,并定时中断实现变色或闪烁。1.3 设计原理1.3.1 DOS环境下图形显示机理BIOS 提供了相当丰富的显示功能调用,其显示功能集中在10H 号中断

2、中,共有16 种不同的功能,每个功能有一个编号,对应的编号为000FH。当调用某个显示功能时,应根据需要设置好入口参数,把功能号置入AH寄存器中,然后发中断指令“INT10H”。与图形显示有关的子功能主要集中在如表1 几个功能号。在图形方式下,屏幕以像素为单位。中分辨率下,屏幕可分成320*200=64000个像素点,每个像素有四种不同的显示颜色,背景有16种颜色;高分辨率下,屏幕分成640*200=128000 个像素点,只支持黑白两色。任何一个图形都可以看作是由点组成的,这些像素点“点亮”或“熄灭”,就构成相应的图形。1.3.2 Bresenham画圆算法Bresenham画圆算法又称中点

3、画圆算法,与Bresenham 直线算法一样,其基本的方法是利用判别变量来判断选择最近的像素点,判别变量的数值仅仅用一些加、减和移位运算就可以计算出来。为了简便起见,考虑一个圆心在坐标原点的圆,而且只计算八分圆周上的点,其余圆周上的点利用对称性就可得到。 圆有“八对称性”,如下图所示。 显然,我们只需要知道了圆上的一个点的坐标 (x, y) ,利用八对称性,我们马上就能得到另外七个对称点的坐标。 给出圆心的坐标(0, 0)和半径,求圆图像的最佳逼近点。 我们求的八分之一圆孤为(0, R) -(R2,R2),可知最大位移方向是x方向,x0 = 0, y0 = R,每次对x自增,然后判断y是否减1

4、,直到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设置显示方式依次确定正面五环各环的像素值即颜色,调

5、用单环绘制程序,完成正面五环定时中断否?依次确定反面五环各环的像素值即颜色,调用单环绘制程序,完成反面五环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

6、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;第二个环,

7、绿色 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;第四个环,蓝色 mo

8、v 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 s

9、ingle_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;第三个环,蓝色

10、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; 第五个

11、环,黄色 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 ;

12、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

13、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 c

14、all 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,x

15、1 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

16、cx,y1 call huadian ;画点 (y,-x) call delay ret hua endp ;*延时* delay proc near push dx push cx mov dx,2000 d1: mov cx,3000d2: loop d2 dec dx jnz d1 pop cx pop dx ret delay endp code ends end start1.5 程序调试情况(该部分记录测试数据、调试结果及调试过程中遇到的主要问题和解决办法。)四、 参考文献1周明德.微型计算机系统原理及应用.北京:清华大学出版社2张弥左,王兆月,邢立军等.微型计算机接口技术.北京:机械工业出版社3戴梅萼,史嘉权.微型计算机技术及应用.北京:清华大学出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号