emu8086汇编语言图形绘制必威体育精装版完整版本.docxVIP

emu8086汇编语言图形绘制必威体育精装版完整版本.docx

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE28

微机接口报告

汇编语言图形绘制

目录

TOC\o1-3\h\z\u题目要求: 1

第一部分 解决方案概述思路 1

第二部分 所需算法和例程的学习 2

一、 Bresenham直线算法的学习 2

二、 信息显示和调用库函数例程的学习 3

第三部分 汇编语言图形绘制过程: 6

一、 提示信息的显示: 6

二、 直线的绘制 8

三、矩形的绘制 15

四、三角型的绘制 18

五、整体程序的实现 20

六、整体运行结果 25

第四部分 收获与心得 28

参考文献 28

题目要求:

微机接口图形绘制,实现下面的目标

将screen设置为图形显示模式;

程序开始提示绘制:直线、矩形还是三角形;

根据2的选择,进一步通过键盘输入直线、矩形或三角形的参数(即直线端点或▲、■的各个顶点坐标);

步骤3要求的图形绘制结束以后,再进入第2步。

提示:

以程序的规模,需要进行模块化的设计,即首先写好直线绘制的函数,而矩形和三角形分别由4条和3条直线构成;

直线的实现分别用直接写屏技术和中断实现。

该题目的实现涉及到循环、中断调用、函数的编写和调用、显示模式的设置等知识点。

第一部分 解决方案概述思路

根据题目的要求,根据题目的要求,可以将该程序分成四部分来实现。分别是:显示提示信息、画直线、画矩形、画三角形。

显示提示信息部分需要应用的知识主要有:

视屏模式的设置,直接写屏技术,中断,调用库函数判断输入值。

画直线、画矩形、画三角形部分需要应用的知识主要有:

将屏幕设置为图形显示模式,中断,循环和判断,布雷森汉姆直线算法,模块化和函数的嵌套

流程图如下:

选择直线提示信息

选择直线

提示信息

画出图形竖线

画出

图形

竖线

利用判断和循环选择矩形横线

利用判断和循环

选择矩形

横线

选择三角形斜线

选择三角形

斜线

第二部分 所需算法和例程的学习

Bresenham直线算法的学习

Bresenham直线算法描绘直线

在图形模式下画线需要用到的是布雷森汉姆直线算法。通过维基百科查阅资料了解到布雷森汉姆直线算法的基本知识。

Bresenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在n维光栅上最接近的点。这个算法只会用到较为快速的整数加法、减法和位元移位,常用于绘制电脑画面中的直线。是计算机图形学中最先发展出来的算法。经过少量的延伸之后,原本用来画直线的算法也可用来画圆。且同样可用较简单的算术运算来完成,避免了计算二次方程式或三角函数,或递归地分解为较简单的步骤。

以上特性使其仍是一种重要的算法,并且用在绘图仪、绘图卡中的绘图芯片,以及各种图形程式库。这个算法非常的精简,使它被实作于各种装置的固件,以及绘图芯片的硬件之中。

Bresenham直线算法描绘的直线

假设我们需要由(x0,y0)这一点,绘画一直线至右下角的另一点(x1,y1),x,y分别代表其水平及垂直座标,并且x1-x0y1-y0。在此我们使用电脑系统常用的座标系,即x座标值沿x轴向右增长,y座标值沿y轴向下增长。

因此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不变。至于如何找出相关的x值,则需依靠斜率。斜率之计算方法为。由于此值不变,故可于运算前预先计算,减少运算次数。

信息显示和调用库函数例程的学习

老师所提供的例程主要实现的功能是显示提示信息,读取输入的选择,判断后执行相应的程序。

includeemu8086.inc

org100h

lableShowTip:

callShowTip;

callscan_num;

movax,cx;

cmpax,1

jelableDrawLine;

cmpax,2

jelableDrawRect;

print0ah,0dh

printpleaseenteryourchoiceagain;

print0ah,0dh

jmplableShowTip;

lableDr

您可能关注的文档

文档评论(0)

bookuser001 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档