图形变换Word文档格式.docx

上传人:b****5 文档编号:21716897 上传时间:2023-01-31 格式:DOCX 页数:19 大小:109.71KB
下载 相关 举报
图形变换Word文档格式.docx_第1页
第1页 / 共19页
图形变换Word文档格式.docx_第2页
第2页 / 共19页
图形变换Word文档格式.docx_第3页
第3页 / 共19页
图形变换Word文档格式.docx_第4页
第4页 / 共19页
图形变换Word文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

图形变换Word文档格式.docx

《图形变换Word文档格式.docx》由会员分享,可在线阅读,更多相关《图形变换Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

图形变换Word文档格式.docx

设计之前要查询资料,熟悉DOS调用和BIOS调用,以便在DOS界面上能输出图形和颜色。

二、图形变换的原理分析

根据课程设计任务书所给出条件要求,我主要把程序分为四部分来实现,即把程序分为四个模块,采用子程序调用的方法,这样不仅有利于程序的编写,使程序清晰可见,还方便程序的修改及阅读。

第一个模块为主程序模块,该程序快中主要有清屏程序组,使屏幕上卷,从而实现清屏功能,清屏功能用INT10H的功能六实现,键盘输入判断,利用CMP指令,判断ZF标志位,从而调用正确的子程序,最后是退出语句。

第二个模块为画圆程序块。

第三个模块和第四个模块分别为画矩形和画三角形子程序,他们的原理是完全相同的,首先利用CX确定一个行坐标,利用DX确定一个纵坐标,两坐标交点即为像素点坐标,然后利用INT10H的0CH号功能写入像素,用BH的值确定像素点颜色,利用CX寄存器的值确定直线的像素点个数,即为线长,此法关键在于正确确定每个顶点的坐标。

3、设计方案的选择

根据题目要求需实现画图功能,我主要采用了两种方法。

第一种方法是直接建立坐标,在坐标点写入像素,该方法利用10H中断的0CH号功能写像素,并且通过AL寄存器设置像素点颜色,用这个方法的话比较容易理解,无需其他算法,操作起来比较简单,但是能实现的画图功能比较有限,如利用这个方法画直线比较简单,语句较少,但是在画非直线图形的时候用这个方法反而变得很复杂。

第二个方法通过各行、各列像素中心构造一组虚拟网格线,按直线从起点到终点的顺序计算直线各垂直网格线的交点,然后确定该列像素中与此交点最近的像素。

该算法的优点在于可以采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列所求的像素。

四、程序分析与设计

1、主程序的分析与设计

首先分析主程序,主程序中包含了清屏程序和子程序调用以及退出子程序,清屏子程序的目的是清楚屏幕上的内容,接着根据输入字母判断后调用符合条件的子程序。

主程序如下:

MAINPROCFAR

MOVAX,DATAS

MOVDS,AX

MOVAX,0600H;

用INT10H的功能6清屏

MOVBH,7

MOVCX,0;

窗口左上角坐标

MOVDX,184FH;

窗口右上角坐标

INT10H

L1:

MOVAH,1;

利用21H中断判断字母

INT21H;

输入并改变ZF标志位

CMPAL,'

S'

JZP1

T'

JZP2

Q'

JZEXIT

JMPL1

P1:

CALLJUXING;

调用画矩形的子程序

P2:

CALLSANJIAO;

调用画三角形的子程序

EXIT:

MOVAX,4C00H:

退出子程序

INT21H

MAINENDP

主程序流程图如下图图1所示:

Y

N

N

图1程序流程图

2、画三角形子程序分析

画三角形子程序:

画三角形子程序靠点亮屏幕像素点实现,通过INT10H中断的0C号功能设置屏幕的模式为写像素模式,通过BH的值确定像素点颜色,通过坐标确定三角形各点的坐标,CX的值为横坐标,DX的值为纵坐标,通过循环点亮像素点分别构成三角形的两直角边和斜边。

画三角形子程序如下:

SANJIAOPROCNEAR

MOVAH,0;

设置显示模式

MOVAL,12H

INT10H

MOVCX,100;

从坐标(100,200)处画第一个三角形水平线

MOVDX,200

LOP1:

MOVAH,0CH

MOVAL,0AH

MOVBH,0

INCCX

CMPCX,200;

线长为100

JNZLOP1

从坐标(100,200)处画第MOVDX,200一个三角形垂直线

LOP2:

MOVAH,0CH;

写像素功能

MOVAL,0AH;

颜色为浅绿色

DECDX

CMPDX,100;

判断线是否结束,线长为100

JNZLOP2

从坐标(100,100)处画第一个

MOVDX,100三角形斜线

LOP3:

INCDX

CMPDX,200

JNZLOP3

MOVCX,300;

画第二个三角形,画法和的个三角MOVDX,200一样关键在于找准坐标

LOP4:

MOVAL,0CH

CMPCX,400

JNZLOP4

MOVCX,300

LOP5:

CMPDX,100

JNZLOP5

MOVDX,100

LOP6:

JNZLOP6

MOVCX,500;

画第三个三角形

LOP7:

MOVAL,0EH

CMPCX,600

JNZLOP7

MOVCX,500

LOP8:

JNZLOP8

LOP9:

JNZLOP9

RET

SANJIAOENDP

画三角形程序流程图如下图图2所示:

图2画三角形程序流程图

图2为画三角形程序流程图,画出一边后,依据同样的方法确定坐标即可画出其余所有边。

3、画矩形子程序分析

画矩形程序分析:

矩形的画法和三角形的画法是一样的,找准各个点的坐标,从一个坐标到另一个坐标之间点亮像素点即为矩形的边。

画矩形的程序如下:

JUXINGPROCFAR

MOVAH,0

MOVCX,50;

画第一个矩形

MOVDX,200;

起始点坐标为(50,200)

设置写像素

设置颜色

MOVBH,0;

设置页号(一般为0)

INCCX;

横坐标加一

CMPCX,100;

判断直线是否画完

JNZLOP1;

若ZF不为0则循环LOP1

直到画完直线

以下程序段和上一断是一样的

除坐标外用法相似,在此不再

阐述

MOVCX,50

CMPCX,100

MOVCX,100

MOVCX,150;

第二个矩形

CMPCX,200

MOVCX,150

MOVCX,200

MOVCX,250;

第三个矩形

CMPCX,300

MOVCX,250

LOP10:

JNZLOP10

LOP11:

JNZLOP11

LOP12:

JNZLOP12

MOVCX,350;

第四个矩形

LOP13:

MOVAL,0FH

JNZLOP13

MOVCX,350

LOP14:

JNZLOP14

LOP15:

JNZLOP15

MOVCX,400

LOP16:

JNZLOP16

JUXINGENDP

画矩形程序流程图和三角形程序流程图如下图图3所示:

图3画矩形程序流程图

五、调试记录与结果分析

1、调试记录

程序代码写好之后,我进行了大量调试工作,首先是把子程序通过主函数连接在一起,运行程序后,生成了EXE文件,但是无法得出结果,跳出对话框显示“系统不支持全屏显示”,于是在网上查了之后发现在win7下DOS不支持全屏显示,如下图图4所示:

图4调试错误截图

通过同学的帮助,最终找到了解决办法,利用一个叫DOSBOX的软件能在win7的环境下运行汇编该EXE文件,但在运行时需要用到几句调用指令。

指令如下

MOUNTCD:

\

C:

文件名.EXE

此外在程序编写过程中也遇到了一些小问题,跳转设置不正确,使程序无法按预定的步骤跳转,在主程序中条件跳转JZ和无条件跳转JMP的运用没有用对,最终通过几次调试,找到了正确的排放顺序。

2、结果分析

程序调试正确后按不同的字母有不同的显示,实现了题目所要求的功能。

按S后程序运行后结果显示如下图图5所示:

图5四个矩形

按T后程序运行结果显示如下图图6所示:

图6三个三角形

五、心得体会

通过几天的努力,我完成了这次微机原理课程设计,其中遇到了很多问题,最难得应该是如何画圆我通过上网查资料最终找到了解决办法,其次是无法运行的问题,通过同学的帮助的利用DOS软件解决了该问题,在课程设计中,我把程序分为两个大步骤进行,首先是分别完成画三角形,画矩形,画圆的功能,实现模块化功能,然后再通过子程序调用将程序连接起来并调试实现我们想要的功能。

在课程设计中,用到了很多在课堂上没有涉及并学习的相关知识,如很多中断功能号的作用及相关寄存器的设置,颜色的搭配等,本次课程设计中我主要用到了10H中断,16H中断,21H中断,它们都有很多功能号,且不同的功能号实现不同的功能,所以我们必须查阅很多资料,借此我们可以学到了一些新的东西,如INT10H的06H号克用来作清屏功能,21H中断的01H可以用来扫描键盘输入,在设置像素点颜色是只需在10H中断的0C号功能下设置BH寄存器即可等。

通过课程设计,让我认识到汇编语言和其他高级语言的不同点,汇编语言晦涩难懂但运行效率很高,高级语言虽然容易编写但相对汇编语言效率较低,通过这次课程设计让我对微机原理课程上讲到的各种部分的功能,以及子程序的调用有了实际运用的机会,还提高了自己的动手能力和运用汇编语言的编程能力,对我以后走上工作岗位很有帮助,加强了专业技能。

参考文献

[1]《微机原理与接口技术》(基于16位机),周佩玲等,电子工业出版社.2005

[2]《微型计算机原理与接口技术》,姚燕南,高等教育出版社.2004

[3]《计算机硬件技术及应用基础.下册:

接口与应用》,邹逢兴,国防科技大学出版社.2001

[4]《微型计算机接口技术及应用》,2000.刘乐善,华中科技大学出版社.

[5]《IBMPC汇编语言程序设计》,2001.沈美明、温冬婵,清华大学出版社.

[6]《80X86汇编语言程序设计》.马妮编著,机械工业出版社,2009

[7]《汇编语言程序设计》.齐志儒、高福祥,东北大学出版社,2000

[8]《微型计算机原理与接口技术》.姚燕南、薛钧义,北京:

高等教育出版社,2004

[9]《汇编语言(第二版)》.王爽,清华大学出版社,2008

[10]《Windows环境下汇编语言程序设计》.蓝琚成,地质出版社,2000

[11]《IBM—PC汇编语言程序设计(第二版)》.沈美明、温冬婵,清华大学出版社,2005年

设计总结:

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

指导教师评语:

课程设计成绩:

指导教师签名:

年月日

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

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1