11级微机课设Word文档格式.docx
《11级微机课设Word文档格式.docx》由会员分享,可在线阅读,更多相关《11级微机课设Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
该报告主要包括了涉及任务及要求分析,系统原理阐述,流程图和源程序,其中程序主要分为两大部分,主程序和子程序,主程序中包含了清屏指令组,子程序调用指令和退出指令,子程序分别实现画三角形,画正方形,画圆的功能。
本次课程设计主要是通过应用微机原理中汇编的几个步骤——编辑、汇编、连接、运行或调试运行,使得在DOS界面完成图形变换。
关键词:
汇编语言、子程序、DOS
计算机图形显示软件设计
1设计任务及方案分析
1.1设计任务
使用汇编语言设计一个运行于计算机的显示标准图形的软件,软件应实现显示正方形、三角形和圆。
可以附加显示其它图形和添加动态显示效果。
1.2要求分析
本课程设计的任务是用汇编语言编写一个“显示标准图形软件”,根据题目分析可得该程序需要实现以下几个功能,第一,检测键盘字母输入;
第二,判断字母是否符合要求,第三,当符合条件时调用正确的子程序;
第四,运行输出想要的结果。
本课程设计大体可分为四个模块,第一个模块为主程序模块,该程序快中主要有清屏程序组,使屏幕上卷,从而实现清屏功能,清屏功能用INT10H的功能六实现,键盘输入判断,利用CMP指令,判断ZF标志位,从而调用正确的子程序,最后是退出语句。
第二个模块为画三角形程序块。
第三个模块和第四个模块分别为画正方形和画圆子程序,他们的原理是完全相同的,首先利用CX确定一个行坐标,利用DX确定一个纵坐标,两坐标交点即为像素点坐标,然后利用INT10H的0CH号功能写入像素,用BH的值确定像素点颜色,利用CX寄存器的值确定直线的像素点个数,即为线长,此法关键在于正确确定每个顶点的坐标。
1.3设计方案的选择
根据题目要求需实现画图功能,我采用了如下方法:
直接建立坐标,在坐标点写入像素,该方法利用10H中断的0CH号功能写像素,并且通过AL寄存器设置像素点颜色,用这个方法的话比较容易理解,无需其他算法,操作起来比较简单,但是能实现的画图功能比较有限,如利用这个方法画直线比较简单,语句较少,但是在画非直线图形的时候用这个方法反而变得很复杂。
因此,在画圆的模块,花了我不少的时间去确定坐标值。
2程序分析与设计
2.1主程序的分析与设计
首先分析主程序,主程序中包含了清屏程序和子程序调用以及退出子程序,接着根据输入字母判断后调用符合条件的子程序。
主程序如下:
START:
MOVAX,DATA
MOVDS,AX
MOVAH,0;
清屏,设置显示模式
MOVAL,4;
显示模式代号
INT10H;
10H号中断,显示I/O程序
INPUT:
LEADX,INFO1;
要输出字符串首地址
MOVAH,9;
在标准输出上显示一个字符串
INT21H
MOVAH,08;
不带回显键盘输入,出口参数al
CMPAL,'
S'
JZSA
s'
Z'
JZZHEN
z'
Y'
JZYUA
y'
Q'
JZEXIT
q'
MOVDX,OFFSETINFO2
MOVAH,09
SA:
CALLSAN
JMPINPUT
ZHEN:
CALLZHENG
JMPINPUT
YUA:
CALLYUAN
EXIT:
MOVAH,4CH
主程序流程图如下图图1所示:
开始
Y
N
N
结束
图1主程序流程图
2.2画三角形子程序分析
画三角形子程序:
画三角形子程序靠点亮屏幕像素点实现,通过INT10H中断的0C号功能设置屏幕的模式为写像素模式,通过BH的值确定像素点颜色,通过坐标确定三角形各点的坐标,CX的值为横坐标,DX的值为纵坐标,通过循环点亮像素点分别构成三角形的两直角边和斜边。
画三角形子程序如下:
SANPROC
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,0
MOVAL,12H
INT10H;
显示I/O程序
MOVAL,4
A0:
MOVDX,1
MOVD3,1
MOVCX,320
A1:
PUSHD3
A2:
MOVAH,12
POPAX
INCCX
SUBD3,1
JNZA2
POPD3
ADDD3,2
POPCX
INCDX
DECCX
JNEA1
DECAL
CMPAL,1
JNEA0
POPDX
POPBX
POPAX
RET
SANENDP
画三角形程序流程图如下图图2所示:
开始
结束
图2变色三角形程序流程图
2.3画方形子程序分析
画矩形程序分析:
方形的画法和三角形的画法是一样的,只需找准各个点的坐标,从一个坐标到另一个坐标之间点亮像素点即为方形的边。
画方形的程序如下:
ZHENGPROC
MOVAH,0FH;
取当前显示模式
INT10H
MOVAL,3
MOVCX,1;
字符数量
;
*****光标向下动********
LINE:
INCDH;
行增加
CMPDH,20;
20行
JNELINE
JMPLINE1
****光标向右动*****
LINE1:
INCDL;
列增加
CMPDL,55;
55列
JNELINE1
JMPLINE2
*****光标向上动*********
LINE2:
DECDH;
行减少
CMPDH,5;
5行
JNELINE2
JMPLINE3
***光标向左动***
LINE3:
DECDL;
列减少
CMPDL,25;
25列
JNELINE3
L00:
MOVAH,7;
向下滚屏
MOVAL,14;
下滚行数
MOVBH,40H;
红色,填空白行的属性
MOVCH,6;
窗口左上角行号
MOVCL,26;
窗口左上角列号
MOVDH,19;
窗口右下角行号
MOVDL,54;
窗口右下角列号
*****时间控制*****
L1:
INT1AH
CMPDL,30
JNZL1
L2:
MOVAH,6;
向上滚屏
MOVAL,14
MOVBH,30H;
青色
MOVCH,6
MOVCL,26
MOVDH,19
MOVDL,54
ZHENGENDP
画正方形程序流程图如下图3所示:
图3变色方形程序流程图
2.4画圆子程序分析
画圆程序分析:
圆的画法比较麻烦,找准圆上各个点的坐标,