emu汇编语言图形绘制

emu汇编语言图形绘制

ID:32700962

大小:2.13 MB

页数:30页

时间:2019-02-14

emu汇编语言图形绘制_第1页
emu汇编语言图形绘制_第2页
emu汇编语言图形绘制_第3页
emu汇编语言图形绘制_第4页
emu汇编语言图形绘制_第5页
资源描述:

《emu汇编语言图形绘制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、微机接口报告汇编语言图形绘制28/30目录题目要求:1第一部分解决方案概述思路1第二部分所需算法和例程的学习2一、Bresenham直线算法的学习2二、信息显示和调用库函数例程的学习3第三部分汇编语言图形绘制过程:6一、提示信息的显示:6二、直线的绘制8三、矩形的绘制15四、三角型的绘制18五、整体程序的实现20六、整体运行结果25第四部分收获与心得28参考文献2828/30题目要求:微机接口图形绘制,实现下面的目标1、将screen设置为图形显示模式;2、程序开始提示绘制:直线、矩形还是三角形;3、根据2的选择,进一步通过键盘输入直线、矩形或三角形的参数(即直线端点或▲、

2、■的各个顶点坐标);4、步骤3要求的图形绘制结束以后,再进入第2步。提示:1、以程序的规模,需要进行模块化的设计,即首先写好直线绘制的函数,而矩形和三角形分别由4条和3条直线构成;2、直线的实现分别用直接写屏技术和中断实现。3、该题目的实现涉及到循环、中断调用、函数的编写和调用、显示模式的设置等知识点。第一部分解决方案概述思路根据题目的要求,根据题目的要求,可以将该程序分成四部分来实现。分别是:显示提示信息、画直线、画矩形、画三角形。显示提示信息部分需要应用的知识主要有:视屏模式的设置,直接写屏技术,中断,调用库函数判断输入值。画直线、画矩形、画三角形部分需要应用的知识主要

3、有:将屏幕设置为图形显示模式,中断,循环和判断,布雷森汉姆直线算法,模块化和函数的嵌套流程图如下:选择直线提示信息画出图形竖线利用判断和循环选择矩形横线选择三角形斜线28/30第二部分所需算法和例程的学习一、Bresenham直线算法的学习lBresenham直线算法描绘直线在图形模式下画线需要用到的是布雷森汉姆直线算法。通过维基百科查阅资料了解到布雷森汉姆直线算法的基本知识。Bresenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在n维光栅上最接近的点。这个算法只会用到较为快速的整数加法、减法和位元移位,常用于绘制电脑画面中的直线。是计算机图形学中最

4、先发展出来的算法。经过少量的延伸之后,原本用来画直线的算法也可用来画圆。且同样可用较简单的算术运算来完成,避免了计算二次方程式或三角函数,或递归地分解为较简单的步骤。以上特性使其仍是一种重要的算法,并且用在绘图仪、绘图卡中的绘图芯片,以及各种图形程式库。这个算法非常的精简,使它被实作于各种装置的固件,以及绘图芯片的硬件之中。Bresenham直线算法描绘的直线假设我们需要由(x0,y0)这一点,绘画一直线至右下角的另一点(x1,y1),x,y分别代表其水平及垂直座标,并且x1-x0>y1-y0。在此我们使用电脑系统常用的座标系,即x座标值沿x轴向右增长,y座标值沿y轴向下增

5、长。因此x及y之值分别向右及向下增加,而两点之水平距离为且垂直距离为y1-y0由此得之,该线的斜率必定介乎于1至0之间。而此算法之目的,就是找出在与之间,第x行相对应的第y列,从而得出一像素点,使得该像素点的位置最接近原本的线。对于由(x0,y0)及(x1,y1)两点所组成之直线,公式如下:因此,对于每一点的x,其y的值是因为x及y皆为整数,但并非每一点x所对应的y皆为整数,故此没有必要去计算每一点x所对应之y值。反之由于此线之斜率介乎于1至0之间,故此我们只需要找出当x到达那一个数值时,会使y上升1,若x尚未到此值,则y不28/30变。至于如何找出相关的x值,则需依靠斜率

6、。斜率之计算方法为。由于此值不变,故可于运算前预先计算,减少运算次数。一、信息显示和调用库函数例程的学习老师所提供的例程主要实现的功能是显示提示信息,读取输入的选择,判断后执行相应的程序。28/30includeemu8086.incorg100hlableShowTip:callShowTip;callscan_num;movax,cx;cmpax,1jelableDrawLine;cmpax,2jelableDrawRect;print0ah,0dhprint"pleaseenteryourchoiceagain";print0ah,0dhjmplableShowTip

7、;lableDrawLine:callDrawLine;print0ah,0dhjmplableShowTip;lableDrawRect:callDrawRect;print0ah,0dhjmplableShowTip;retDrawLineprocprint0ah,0dhprint"youwanttodrawline!pleaseentercord:"print0ah,0dhprint"x0="callscan_nummov[bx+si+1],cxprint0ah,0dhprint"y0="callscan_n

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。