您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 汇编语言课设图形设计程序完整版
目录摘要...............................................................................................................................11.方案选择.............................................................................................................31.1字符构成图形.....................................................................................................31.2在图片模式下直接导入相关图形的图片.........................................................31.3在图片模式下采用计算求点写像素的方法绘图.............................................31.4在图片模式下采用鼠标绘图.............................................................................32.编程思想.............................................................................................................33.程序设计.............................................................................................................43.1主程序设计......................................................................................................43.2矩形子程序设计.................................................................................................63.3三角形子程序设计.............................................................................................83.3圆形子程序设计...............................................................................................103.4公共使用子程序设计.......................................................................................114.硬件原理...........................................................................................................115.调试结果...........................................................................................................12结束语.........................................................................................................................14参考文献.....................................................................................................................15附录1..........................................................................................................................16附录2宏文件.............................................................................................................35武汉理工大学《微机原理与接口技术》课程设计说明书2摘要本绘图程序人机交互性好,可以方便的调节矩形,三角,圆的大小和形状。在采用bresenham算法提高了运行速度同时,图形的显示方法是采用写像素的方法定位精确轨迹平滑。同时还增加了动态显示效果,可以直观的看到像素点的移动。程序在编译之后只有2KB大小占用内存小运算快速。关键字:绘图动态显示任意大小武汉理工大学《微机原理与接口技术》课程设计说明书3计算机图形显示软件设计1.方案选择1.1字符构成图形在图形由字符构成时,屏幕的显示模式为为文字型。编程简单但是图像质量和交互性很差1.2在图片模式下直接导入相关图形的图片程序较易实现,显示的效果非常好。但是图片在取模之后很大,在读取像素写像素时较慢。交互性也不好1.3在图片模式下采用计算求点写像素的方法绘图程序编程复杂,算法复杂。绘图效果较好,程序很灵活可以显示各种形状大小的三角,矩形和圆。交互性很好而且还可以改变颜色,添加动态显示,实现图像移动等效果。1.4在图片模式下采用鼠标绘图程序的交互性很好,可以很方便的确定图形绘制的位置和大小。但是编程太复杂,查阅了有关资料。是使用dos中断来调用鼠标,之后对鼠标跟踪控制。在综合比较之下,程序的性能是首要考虑的指标。方案三和方案四比起来较易编写一些。所以最终采用的是方案三。2.编程思想在程序设计时采用先整体再分块,模块化编程的思想。首先整体设计出程序的框架,写好主程序。再分模块写好各个子函数。调试好一个功能后再去编写下一个模块。主函数的主体是一个分支选择程序。包含了三个绘图模块圆,三角,矩形的数据定义和分支入口程序段。而三个绘图子模块中又各自包含了若干子函数。同时为了使程序紧凑,还编写了一些各个子模块公共使用的子函数。武汉理工大学《微机原理与接口技术》课程设计说明书4程序概要框架图如下图1:程序概要框架图3.程序设计3.1主程序设计主程序主体是一个分支选择程序,包含了提示菜单,输入部分和选择部分。采用MOVAH,9INT21H中断在屏幕上输出提示信息。MOVAH,1INT21H从键盘输入一个字符将它的存在AL中再与1,2,3,q相比较跳转到响应的子函数入口程序段中。同时还设计了检验输入的程序段再输入不为1,2,3q,时将自动跳转提示重新输入。武汉理工大学《微机原理与接口技术》课程设计说明书5图2:主程序流程图武汉理工大学《微机原理与接口技术》课程设计说明书63.2矩形子程序设计在矩形子程序中采用写像素点的方法,点动成线将四条线一条一条的画出来。首先提示输入信息输入矩形的长和宽。调用一个输入函数将输入数据以16进制的方式存入AX中,再转存到L_S,W_S中。之后将屏幕的模式设为图像模式640*480*16色,将长和宽一次存入CX中采用循环LOOP指令。保持X不变Y依次增加或者Y不变X依次增加将四条直线一一画出。同时为了使显示效果更好一些对线条进行了加粗,宽度为两个像素。为了使程序结构清晰编写了WRITE_PIXEL宏指令,每调用一次就画出一个点。而且可以认为的设定点的位置颜色等。在函数中还加入了延时子程序,每画完一个点之后就调用一个延时子程序。这样就可以在屏幕上实现动态显示。在这部分的程序设计中也是采用模块化的思想,先画出一条直线。改变参数就可以画出另外的三条直线。同时在屏幕模式设定时也编写宏指令SETMODE。调用的宏指令如下WRITE_PIXELMACROPAGE1,ROW,COLUMN,COLORMOVAH,0CHMOVAL,COLORMOVBH,PAGE1MOVDX,ROWMOVCX,COLUMNINT10HENDMSETMODEMACROMODE1MOVAH,0MOVAL,MODE1INT10HENDM武汉理工大学《微机原理与接口技术》课程设计说明书7子程序流程图如下图3:矩形子程序流程图武汉理工大学《微机原理与接口技术》课程设计说明书83.3三角形子程序设计在三角形绘制中程序也分为几个部分,首先是三个顶点的输入子程序。然后将三个顶点压栈,再调用Bresenham画线子程序。在Bresenham画线子程序中依次调用写像素子程序和延时子程序实现三条线段的动态显示。三角部分整体程序框架图如图4:三角子程序框架图武汉理工大学《微机原理与接口技术》课程设计说明书9Bresenham画线算法是绘制三角形的核心程序,分析如下Bresenham算法是计算机图形学中为了“显示器(屏幕或打印机)系由像素构成”的这个特性而设计出来的算法,使得在求直线各点的过程中全部以整数来运算,因而大幅度提升计算速度。Bresenham算法是计算机图形学领域使用最广泛的直线扫描转换方法。其原理是过各行、各列像素中心构造一组虚拟网格线,按直线从起点到终点顺序计算直线各垂直网格线的交点,然后确定该列像素中与此交点最近的像素。该算法的优点在于可以采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列所求的像素。例如对于直线方程Y=kX+b;A:0K1时候的算法1:输入线段的两个端点Point1和Point2,并且存储到Point1(x1,y1)和Point2(x2,y2)中;2:将Point1载入桢缓存,绘画第一个起始点;3:计算常量△x、△y、2△y和2(△y-△x),并且获得一个决策参数的第一个值:P=2△y-△x;4:从n=0开始,在沿线经过每个Xn处,进行下面的检测:如果Pn0,下一个点绘制的是(Xn+1,yn),并且Pn+1=Pn+2△y如果P0=0,下一个点绘制的是(Xn+1,Yn+1),并且Pn+1=Pn+2(△y-△x)5:重复执行△x-1次步骤4;B:斜率k=1或斜率k=0时候的算法对于斜率等于0或者斜率等于1时候,不需要通过算法直接的对于其中单一坐标变量进行处理。C:斜率k0的情况算法将起始点和中止点坐标Point1和Point2交换,可以转化到斜率为0和1之内的算法去实现。武汉理工大学《微机原理与接口技术》课程设计说明书103.3圆形子程序设计图5:圆形子程序框架图在圆绘制模块中同样是采用Bresenham画线算法。先由键盘输入圆半径,再设置成图形模式。在调用圆Bresenham子程序将相关点堆栈,然后再调用圆画点子程序在屏幕上下左右四个点上向两边同时开始画点。每画一个点就调用一下延时子程序实现绘图的动态显示。武汉理工大学《微机原理与接口技术》课程设计说明书113.4公共使用子程序设计为了使程序结构较清晰,将三个子模块和主函数共同使用的子函数统一编写。它们是数据输入子函数READ可以讲键盘输入的数据转化为16进制存在AX中。在各个子函数的数据输入模块都是调用的这个子函数。还有写像素子函数PIXEL。它的作用是把经过Bresenham算法堆栈的数据用写像素的方法写在屏幕上。延时子函数DELAY它的作用是延时使图像动态显示。清屏CLEAR它的作用是调背景色清屏。便于在图形模式和文字模式之间进行转换。在其中的延时子程序采用了双层循环的方法,因为各个子程序运行用时不同为了便于调试
本文标题:汇编语言课设图形设计程序完整版
链接地址:https://www.777doc.com/doc-3421555 .html