1 / 41
文档名称:

课程设计-学号姓名显示设计.doc

格式:doc   页数:41
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

课程设计-学号姓名显示设计.doc

上传人:799474576 2013/9/20 文件大小:0 KB

下载得到文件列表

课程设计-学号姓名显示设计.doc

文档介绍

文档介绍:学号姓名显示设计
设计概述
本次课程设计采用DOS和BIOS功能调用,采用25×80的彩色图像显示方式。先在坐标纸上用ASCII码所对应的字符拼出自己的名字和学号,并设定ASCII码的颜色值。ASCII码对应字符的位置由行数与列数的二维坐标确定。其中行向上则减,向下则增;列向左则减,向右则增。程序在数据段中写出所要显示的我名字的位形图,每行数据段定义组成文字的一个点。其中包含组成文字的字符、颜色、横坐标、纵坐标。文字的变色是通过同一个字的不同颜色版本去覆盖当前的版本以及清屏、擦除程序实现的。文字的闪烁则是通过将颜色属性的八位二进制数的最高位置一实现的。通过比较输入字符与0、Q或q的大小,来实现退出的功能。
设计要求
1)利用80x86汇编语言BIOS中断调用的方法,通过字符设计自己的名字及学号,并在显示器上用6种以上的颜色显示出来;
2)姓名与学号可动态切换,且按某种规律闪烁变化,按“q”键退出;
3)可自行设计显示姓名及学号的方案。
三、设计内容
文字显示可采用坐标纸写点的方式, 虽然写点的工作量较大,但是便于理解,容易修改。用相同字体但不同颜色的字符去覆盖对应的字符,只能起到变色的作用。要实现闪烁还要把每一个点的颜色属性最高位设为1。退出程序块中,在判断输入字符是否为Q或q之前必须加一段有没有字符输入的程序。否则,程序运行到判断字符这里,运行窗口就会等在那里,直到输入字符才能继续运行。这样每次运行到这里程序就会等着,实现不了霓虹灯的连续闪烁。
程序流程图
(1)主程序流程图
流程思路:数据段初始化→调用汉字显示程序,先显示汉字“li”,再显示汉字“li1”→调用竖条纹显示程序,显示运动的条纹→判断是否有字符输入,没有的话,继续往下执行→有字符输入时,判断是否为“Q”或“q”→不为“
Q”或“q”时,转到执行程序段Aagain1→为“Q”或“q”时,退出程序。
主程序流程图如下:
开始
数据段初始
Y
Y
N
N
结束
输入字符是否是“Q”、“q”?
调用汉字显示子程序,先后显示“zhen”,“zhen1”
调用条纹显示子程序,显示运动的条纹
调用汉字显示程序,先后显示“li”,“li1”
判断是否有字符输入?
调用条纹显示子程序,显示运动的条纹
调用汉字显示子程序,先后显示“098813”,“098813”
调用条纹显示子程序,显示运动的条纹
图1 学号和姓名显示主程序
子程序流程图
本程序显示的汉字为自己的名字,名字中的每个字都用不同颜色的版本写两次,然后竖形条纹扫过,条纹扫过时汉字被覆盖,条纹扫过后开始显示下一个文字,然后条纹再扫过,一直这样循环。因此,子程序有汉字显示子程序、竖形条纹显示子程序、擦除子程序,对应的流程图分别如图2、3、4所示。
开始
Y
N
CX中内容自减1
寄存器出栈
判断CX中内容是否为0?
CX出栈,保存循环次数
在指定坐标处写第一个点
CX入栈
保存组成点的基本信息
CX寄存器清零
寄存器入栈

结束
图2 学号和姓名显示子程序流程图
开始
寄存器入栈
CX寄存器清零
保存组成点的基本信息
将字符写11次
判断指定坐标处字符是否为*?
判断指定坐标处字符是否为@?
CX出栈,保存循环次数
在指定坐标处写第一个点
判断是否到达屏幕最左端?
CX寄存器入栈
Y
N

Y
N
N
Y
寄存器出栈
结束

图3 竖形条纹显示子程序
开始
N
N
N
Y
Y
结束
保存点的基本信息
列坐标dl自减1
将字符改为*
将字符写11个
判断指定位置处字符是否为@?
判断是否到达屏幕最左端?
保存组成点的基本信息
判断指定位置处字符是否为*?


图4 擦除子程序


(1)程序中用到的BIOS内的中断功能
①02H号功能调用
功能:用文本坐标下设置光标位置
入口参数:AH=02H BH=显示页码
DH=行(Y坐标) DL=列(X坐标)
出口参数:无
②08H号功能调用
功能:读光标处的字符及其属性
入口参数:AH=08H BH=显示页码
出口参数:AH=属性 AL=字符
③09H号功能调用
功能:在当前光标处按指定属性显示字符
入口参数:AH=09H AL=字符
BH=显示页码 BL=属性(文本模式)或颜色(图形模式)
CX=重复输出字符的次数
出口参数:无
④0FH号功能调用
功能:读取显示器模式
入口参数:AH=0FH
出口参数:AH=屏幕字符的