霓虹灯显示程序设计详解文档格式.docx

上传人:b****2 文档编号:4863894 上传时间:2023-05-04 格式:DOCX 页数:37 大小:468.12KB
下载 相关 举报
霓虹灯显示程序设计详解文档格式.docx_第1页
第1页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第2页
第2页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第3页
第3页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第4页
第4页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第5页
第5页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第6页
第6页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第7页
第7页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第8页
第8页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第9页
第9页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第10页
第10页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第11页
第11页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第12页
第12页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第13页
第13页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第14页
第14页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第15页
第15页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第16页
第16页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第17页
第17页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第18页
第18页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第19页
第19页 / 共37页
霓虹灯显示程序设计详解文档格式.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

霓虹灯显示程序设计详解文档格式.docx

《霓虹灯显示程序设计详解文档格式.docx》由会员分享,可在线阅读,更多相关《霓虹灯显示程序设计详解文档格式.docx(37页珍藏版)》请在冰点文库上搜索。

霓虹灯显示程序设计详解文档格式.docx

典型地来说有以下地址:

0xA0000——EGA/VGA图形模式(64KB)

0xB0000——单色文字模式(2KB)

0xB8000——彩色文字模式和CGA相容模式(2KB)

4.1.2256色调色板

模式0x13有一个256色的调色板。

在该模式下的视频内存存储调色板的索引号。

视频设备根据内存中的索引号,在内存地址对应的屏幕位置上描绘色彩。

例如通过调色板色彩布局图知,0代表黑色,1代表蓝色,4代表红色,255代表白色,其余依次类推。

4.1.3视频显示模式设置

我们可以通过调用BIOS中断0号功能设置视频显示模式,具体的设置如下图所示:

功能:

设置显示模式

入口参数:

AH=00H

AL=显示模式

显示模式列表:

显示模式显示模式属性

00H40×

2516色文本

01H40×

02H80×

04H320×

2004色

05H320×

2004色

06H640×

2002色

07H80×

252色文本

08H160×

20016色

09H320×

0AH640×

0BH保留

0CH保留

0DH320×

0EH640×

0FH640×

3502色(单色)

10H640×

3504色

11H640×

4802色

12H640×

48016色

13H320×

200256色

那么模式设置的代码可以如下编写:

movah,0

moval,13h

int10h

4.3文字显示

利用子程序plotpixel在屏幕的相应坐标上绘制规定的颜色,即可得到一定的图形。

那么绘制文字就由plotpixel子程序按照文字图形扫描得到。

;

-----------------------;

;

plotnameatlocation

(x=bx,y=ax)anddl=color

andsi=字模首地址

plotnameproc

pushax

pushcxN

pushdxY

pushbx

N

movcx,totalbyteY

lop1:

cmpbyteptrds:

[si],'

_’

jnzbranch1

movdl,0

jmpgoalN

branch1:

X'

Y

jnzbranch2

movdl,1

图4-1文字显示程序流程

adddl,[colorchange]

jmpgoal

branch2:

incax

popbx

pushbx

jmpgoal2

goal:

callplotpixel

incbx

goal2:

incsi

looplop1

popdx

popcx

popax

ret

plotnameendp

图4-2清屏程序流程

图4-2文字显示

4.4清屏子程序

同样的道理,可以得到清屏的代码:

---------------------------;

clearthewholescreen

cl=color

clrsrcproc

pushdx

movdl,cl;

dx=2pixels

movdh,cl

movcx,0

xordi,di

A1:

movwordptres:

[di],dx

incdi

incdiN

inccxY

cmpcx,32000;

320*200/2

jlA1Y

ret

clrsrcendp

图4-3清屏程序流程

4.5文字动画效果

利用子程序plotname的输入参数dl,可以轻松地控制绘制文字的颜色,那么使用不同颜色隔一段时间绘制同一坐标时便可以产生闪烁的效果了。

利用子程序plotname的输入参数bx,ax可以轻松地控制绘制文字的位置,那么使用不同的bx,ax值将文字描绘到不同位置,并插入清屏子程序clrscr,以及与延时程序delay相结合使用,便可以产生动画效果了。

图4-4文字的颜色变化

5程序调试

在WINXP操作系统下,在MFPCI98软件中编入80x86汇编程序,用MASM5.0编译,进行汇编、连接、运行操作。

对编译时出现的错误进行调试。

我在编译时容易出现遗漏对应指令的错误,如进行CALL指令调用子程序时,容易遗漏在CALL后的RET指令,导致运行时出现错误图形。

还有在调用INT10H功能时,读光标,置光标还有显示字符串指令时,对寄存器AX,BX,DX,CX,BP的数据传送应根据光标起始位的行列坐标需求来确定数据的传送,才能达到要求的图形显示效果。

6课程设计总结

本次课程设计要求我们用汇编语言编写一个霓虹灯的模拟显示程序,这对于我们来说有一定的考验。

首先,要实现题目要求的功能,我们必须寻找一种最为简便的方法,从思路上去简化,然后在编程过程中需要注意程序的调用和程序的条理问题。

一个程序就算功能实现了,但是也要使主程序和子程序的条理分明,易读性高,才能算一个比较好的程序,调试程序中,学习了汇编语言的整个调试过程,更加容易的找出程序的错误处了

其次在编写图形或文字的时候我们可以直接运用ASCII码先转换,然后设定程序进行读取,如此可以省去繁杂的程序并避免不必要的错误。

如此大大简化了程序,提高了速度。

通过此次课设,我更加了解了自身的不足,程序编写的不熟练以及操作的不简便浪费了很多时间,对课本以外的知识了解的很少,对软件的运行也不够熟练等。

但总的来说,自己还是进步较大,能够基本独立完成此次课设并学到了很多相关知识。

参考文献

[1]沈美明,温冬禅编著.IBM-PC汇编语言程序设计.第二版.北京:

清华大学出版社,2001

[2]周佩玲,吴耿峰,万炳奎编著.十六位微型计算机原理接口及其应用.合肥:

中国科学技术大学出版社,1995

[3]艾德才编著.Pentium/80486实用汇编语言程序设计.北京:

高等教育出版社,2000

[4]谭浩强编著.计算机硬件技术基础.北京:

电子工业出版社,2004

[5]李继灿编著.新编16-32位微型计算机原理及应用.北京:

清华大学出版社,1997

[6]邹逢兴编著.计算机硬件技术基础.北京:

高等教育出版社,2001

[7]邹逢新等编著.微型计算机原理及其应用典型题解析与实战模拟.长沙:

国防科技大学出版社,2001

[8]周佩玲,彭虎,傅忠谦编著.微机原理与接口技术.北京:

电子工业出版社,2007

附录源程序代码

DATASSEGMENT

addrbufdw0,0

colorchangedb0

ledb'

$'

db'

******$'

*****$'

******$'

******$'

******$'

******$'

******$'

*****$'

*****$'

*******$'

********$'

**********$'

********$'

*******$'

******$'

*****$'

****$'

*****$'

****************************************$'

*********************************************$'

********$'

******$'

*********$'

***********$'

**********$'

********$'

*********$'

**************$'

********************$'

***************************$'

**************$'

*********$'

******$'

****$'

***$'

**$'

**$'

*$'

totalbyteequ$-le

kuaidb'

$'

**$'

*****$'

*******$'

**********$'

***************$'

***********************$'

************************$'

*****************$'

*********$'

*********$'

****************************$'

********************************$'

************************************$'

*************$'

***********$'

*********$'

******$'

******$'

***********$'

*********$'

******$'

****$'

*****************************************************$'

*******************************************************$'

**********$'

******$'

************$'

**********$'

niandb'

***$'

*********$'

********$'

******$'

*******$'

**********************************************$'

***********$'

*******$'

********$'

*********$'

************$'

***************$'

**************$'

*********************$'

**********************$'

***********************$'

*******$'

******$'

xindb'

*$'

******$'

********$'

*********************************$'

**************************************$'

***********************************$'

**************$'

****************************$'

**********************************$'

***************$'

********$'

**************$'

***************$'

***************$'

***************$'

************$'

*************$'

***************$'

***************$'

************$'

***************************$'

************************************$'

***************************************$'

***************$'

*************$'

****************$'

********************$'

******************$'

*************$'

************$'

*********$'

*********$'

*****$'

totalbytesequ$-xin

DATASENDS

STACKSSEGMENT

db100dup(0)

STACKSENDS

CODESSEGMENT

ASSUMECS:

CODES,DS:

DATAS,SS:

STACKS

START:

movax,DATAS

movds,ax

movax,STACKS

movss,ax

修改中断向量表中的int9中断

cli

movax,0

moves,ax

pushes:

[9*4]

popds:

[0]

[9*4+2]

[2]

movwordptres:

[9*4],offsetint9

moves:

[9*4+2],cs

sti

设置输出屏幕的显示模式320X200,256色图形方式

movax,0A000H

movah,0

moval,13h

int10h

clearthescreen

movcx,0

callclrsrc

deadlop:

movbx,0

movcx,45

move1:

movsi,offsetxin

callplotname

deccx

cmpcx,0

jzlast1

movdx,1

calldelay

pushcx

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

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2