微机原理课程设计

发布时间:2024-11-18

课程设计任务书

学生姓名: 吴 涯 专业班级: 电气0705 指导教师: 李道远 工作单位: 自动化学院 题 目: 几何图形显示

初始条件:

屏幕上不停地出现随机(随机颜色,随机边长,随机位置)的矩形。

要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具

体要求)

1.设计方案的选择与确定:根据题目要求,参考相关文献资料,选择合适的

软硬件设计方案。

2.程序编制:确定软件方案,绘制系统软件流程图,完成汇编程序的编制。

3.撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程

序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软

件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收

获及心得体会。

时间安排:

1月18到20日:查阅资料

1月21到27日:进行课程设计硬件及软件设计

1月28到30日:课程设计报告撰写

1月31日:答辩

指导教师签名: 年 月 日

系主任(或责任教师)签名: 年 月 日

摘 要

这次课程设计题目是几何图形显示,要求显示一个随机颜色,随机边长,随机位置的矩形,在计算机图形设计中,屏幕上的一个图像由大量的图形像素组成。在图形方式下,显示屏幕上由像素点组成,屏幕按分辨率划分成像素行和列。可以通过读写屏幕上的各个点的像素,显示出各种单色的图形。

显示时,通过对矩形长宽的限制,调用该范围各点的像素,从而在屏幕上显示出单一颜色的矩形。但为了满足要求,必须引用随机函数,得到矩形长宽的随机数,除此之外,还要随机得到矩形的位置坐标和颜色。

既然要求显示几何图形,且要求有颜色,就一定得调用相应的中断服务清屏,还必须设定CX的值,使屏幕能够连续显示出一组颜色、边长和位置各不相同的矩形。

最后,通过对个子程序的编写和调用,最终的效果是在屏幕上显示边长、颜色和位置不断变化的彩色矩形。

关键词:显示 随机 矩形 调用

目录

课程设计任务书…………………………………………………………………1 摘要…………………………………………………………………………………2 1任务设计分析 …………………………………………………………………4 2 设计方案及原理………………………………………………………………5

2.1 设计思路…………………………………………………………………5

2.2 图像显示原理……………………………………………………………5

2.3 随机函数…………………………………………………………………6

2.4 随机颜色…………………………………………………………………6

2.5 随机位置和随机长宽……………………………………………………6

2.6 延迟和清屏………………………………………………………………6 3 程序设计流程图………………………………………………………………7 4 调试过程 ………………………………………………………………………9 5 程序运行结果…………………………………………………………………10 6 总结体会 ………………………………………………………………………11 参考文献 …………………………………………………………………………12 附录…………………………………………………………………………………13

几何图形显示

1 任务设计分析

设计任务:在屏幕上不停地出现随机(随机颜色,随机边长,随机位置)的矩形。

任务分析:认真分析题目后可以知道,该题是要求用写像素的方法绘制图形,因此程序中必定涉及到与屏幕设置和颜色填充有关的编程技巧;另外,从题目中可以看到,出现最多的字眼就是“随机”,基本上显示图形的各个属性都要求随机,包括颜色,大小位置,因此有关产生随机数的程序段是必不可少的,且关于显示矩形的颜色,大小,位置的各个子程序都会用到随机数;还有,因为要求是不停显示随机矩形,即在不同位置显示不同矩形时,相互之间不能干扰,且要能看到效果,因此在显示出矩形后必须有延迟和清屏功能的子程序。

2 设计方案及原理

2.1 设计思路

该设计要求显示一“随机边长、随机位置、随机颜色”的矩形,可以想到这是要求显示一组不同颜色、不同位置且边长不同的矩形。基本思路是先设计一矩形显示程序,然后应用随机函数,得到四组随机数,分别赋值给矩形的边长,颜色和位置,已达到设计目的。

2.2 图像显示原理

本程序设计主要是通过运用显示器中断10H的各种功能实现屏幕显示效果。程序涉及到的功能原理罗列如下:

功能号00H功能,设置显示器模式。入口参数:AH=00H,AL=显示器模式;出口参数:无。本设计中AL=04H,即显示模式为320×200,4色。

功能号0BH 功能描述:设置调色板、背景色或边框入口参数。AH=0BH设置颜色,BH=00H,BL=颜色选择调色板,BH=01H,BL=调色板(320×200、4种颜色的图形模式)。出口参数:无。本设计中要用到该中断的调色板设置。

功能号0CH 功能描述:写图形象素。入口参数:AH=0CH,AL=象素值,BH=页码(CX、DX)=图形坐标列(X)、行(Y)出口参数:无。本程序用这个中断产生随机颜色。

功能号06H和07H 功能描述:初始化屏幕或滚屏。入口参数:AH=06H——向上滚屏,07H——向下滚屏,AL=滚动行数(0——清窗口)BH=空白区域的缺省属性,(CH、CL)=窗口的左上角位置(Y坐标,X坐标),(DH、DL)=窗口的右下角位置(Y坐标,X坐标)。出口参数:无。本程序采用六号中断来达到清屏的目的。

此外,还要用到BIOS中断INT 1AH, 功能00H功能描述:读取时钟“滴答”计数。入口参数:AH=00H,出口参数:AL=00H——未过午夜,否则,表示已过午夜;CX:DX=时钟“滴答”计数。本设计中用该中断产生需要的随机数。

显示矩形时,因为屏幕模式为320*200彩色模式,屏幕中每个点都是一个小方块,所有随机的矩形,先由随机数确定它的顶点坐标,然后以该坐标的行值每

次加一,同时其列值加一,依次给每个点赋由随机颜色子程序得到的像素值,依此循环,直到该矩形的边长达到由随机边长子程序得到的两个随机值。这就能显示出一个随机边长,随机颜色,随机位置的矩形。

2.3 随机函数

随机数是由读时钟计数器的值然后除以200取余得到的,这种方法可以得到从0到199总共两百个随机数。

2.4 随机颜色

首先要设置一个调色板。采用INT 10H中断的0BH号中断可以产生两种模式的调色板,取决于BL的值。因为每种模式产生三种彩色和黑色,所以两个模式总共可以产生六种彩色和一个黑色。本设计在调色板子程序中调用随机数使BL随机获得0或1值,如此便可以随机调用两种模式的七种颜色。在颜色显示子程序中,调用随机数子程序后,除以四求余得到0到3中的一个数,然后在矩形显示子程序中由该数得到对应的像素值,并将其写入规定的点中。为了使矩形不为黑色,在随机颜色子程序中用条件转移语句跳过黑色所对应的值。因此,在运行程序时将看到有六种随机颜色的矩形。

2.5 随机位置和随机长宽

这些随机值都是通过调用随机数子程序根据不同要求除以不同的数,来得到不同范围的随机数。需要注意的是,为保证矩形显示完整,不超过屏幕边界且显示的是矩形块,随机行坐标取0到39,纵坐标取100到199,随机长的范围为20到100,随机宽取10到40。

2.6 延迟和清屏

本程序的延迟是通过设置简单的有限循环实现的。清屏实际上是通过使用显示中断6号功能对屏幕进行初始化。其中AL=0为清窗口,程序中设定的起始点和终止点坐标可以让子程序运行后清除整个屏幕。

3 程序设计流程图

在方案确定后,此程序将有五个子程序,其中延迟和清屏等程序都相对比较简单,因此流程图将由主程序流程图和矩形显示子程序流程图组成。

主程序流程图:

图1 主程序流程图

矩形显示流程图:

图2 矩形显示流程图

4 调试过程

程序调试过程比较麻烦,在开始的时候先写一个矩形显示的子程序,然后再引入随机函数,将矩形的边长,颜色,位置设为随机数。最后,将这些子程序有效地联系起来。这个过程中,会出现很多问题。比如,矩形框的变化显示时间不能太快,需要设置合适的时间。再有就是,矩形显示时,有时会分割显示在屏幕的两端或是矩形显示在整个屏幕上,还会出现矩形的边长太小等情况。这就需要对矩形坐标点的随机值和矩形边长的随机值进行限制,选取合适的取值范围。除此之外,程序调试时,有时会没有图形显示。这是因为图形显示的时间为黑色。所以,也必须保证矩形的随机颜色不能为黑色。

5 程序运行结果

程序调试完毕后,经过编译运行,会在屏幕上显示一组颜色、位置和边长都随机变化的矩形,显示完毕后,自动退出界面。

程序运行结果如下图所示:

图3 程序运行效果

6 总结体会

通过这次课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,补全了我的不足。不仅如此,通过这次课程设计,巩固了我以往学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握各个指令的功能,特别是循环指令。而且,我还学会了子程序的定义及调用,以及正确地运用DEBUG指令。在整个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握DEBUG命令,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,提高了自己独立阅读、编制和调试一定规模的汇编语言程序的能力。

参考文献

[1] 邵玉祥.汇编语言程序设计.北京:科学出版社,2007

[2] 孙德文.微型计算机技术.北京:高等教育出版社,2001

[3] 沈美明.IBM-PC汇编语言程序设计.北京:清华大学出版社,1993

[4] 吴秀清 .微型计算机原理与接口技术.合肥:中国科学技术大学出版社,2002

[5] 周佩玲.微机原理与接口技术.北京:电子工业出版社,2008

附录:

相关程序:

DATA SEGMENT

LINE DW 0 ;矩形顶点的行

ROW DW 0 ;矩形顶点的列

SWIDTH DW 0 ;矩形的长

XK DW 0 ;矩形的宽

COLOR DB 0 ;颜色

DATA ENDS

STACK SEGMENT

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

START: ;主程序

MOV AX , DATA

MOV DS , AX

MOV AH , 0

MOV AL , 04H

INT 10H ;设置320×200彩色图形方式 MOV CX, 10 ;设置循环次数

SAN:

CALL RAND_PALLETTE ;调用调色板

CALL RAND_COLOR ;调用随机颜色

CALL DISP ;调用矩形显示

CALL DELAY ;调用延迟程序

CALL CLEAR ;调用清屏程序

LOOP SAN ;循环显示

MOV AH , 4CH

INT 21H ;返回DOS

DISP PROC NEAR ;矩形显示子程序 PUSH AX

PUSH CX

PUSH DX

PUSH SI

PUSH DI

MOV AH , 0CH

MOV AL , COLOR

CALL RAND_SWIDTH

MOV DI , SWIDTH

CALL RAND_SITE

MOV DX , LINE

CALL RAND_XK

DISP_2: MOV SI , XK

MOV CX , ROW

DISP_1: INT 10H

INC CX

DEC SI

JNZ DISP_1

INC DX

DEC DI

JNZ DISP_2

POP DI

POP SI

POP DX ;指明写点调用 ;取点的颜色 ;用于控制行显示循环 ;取点的行坐标 ;控制列显示循环 ;取显示点的列坐标 ;完成点的显示 ;列坐标加1 ;循环显示完一行的点 ;行坐标加1 ;循环显示完行

POP CX

POP AX

RET

DISP ENDP

RAND_PALLETTE PROC NEAR ;随机调色板子程序 PUSH AX

CALL RAND

MOV AL,BL

ADD AX,0FFH

MOV BL,2

DIV BL

MOV AL,AH

MOV AH,0BH

MOV BH,01

MOV BL,AL

INT 10H

POP AX

RET

RAND_PALLETTE ENDP

RAND_COLOR PROC NEAR

PUSH CX

PUSH DX

PUSH AX

STI

MOV AH,0

INT 1AH

MOV AX,DX

AND AH,3 ;设置调色板 ;随机颜色子程序 ;读时钟计数器值 ;清高6位

MOV DL,4 ;除4,产生0~3余数 DIV DL

MOV BL,AH ;余数存BL,作随机数 CMP BL,0

JNZ A ;保持随机颜色不为黑色 INC BL

A: MOV COLOR,BL

POP AX

POP DX

POP CX

RET

RAND_COLOR ENDP

RAND_SITE PROC

PUSH AX

CALL RAND

MOV AL,BL

AND AX,0FFH

MOV BL,40

DIV BL

MOV BL,AH

AND BX,0FFH

MOV LINE,BX

CALL RAND

MOV AL,BL

AND AX,0FFH

MOV BL,100

DIV BL

MOV BL,AH ;随机位置子程序

微机原理课程设计.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219