|
QB编程的相关知识-显示 |
|
| 来自: | 作者: |
| 下面介绍显卡显存的主要结构 显卡的显示模式大的方面分为两种,一种是文本方式,一种是图形方式。我们现在在Windows中的640×480、800×600和1024×768等都是在图形模式下,而过去的DOS是在文本模式下在QBASIC中如果不用SCREEN语句设置的话,默认是文本模式。 图形模式下的显存地址是从A000:0000开始的,文本模式下的显存地址是从B800:0000开始的。我在这里主要讲讲文本模式。 比如 COLOR 10,3 PRINT "TEST" 这个语句就会调用一些过程比如调用INT21号相关的中断调用,这个相关的调用又调用了BIOS INT10中断......最终的表现形式是反映到显存里,当显存里的数据发生变化的时候,显示器显示的内容也跟着发生变化,所以我们可以绕过这个语句,直接写这个显存,也可以同样达到这个效果,但要注意显存的组织方式, 显示属性定义 B800:0000——长度2000H字 彩色显示器文本模式的显示缓冲区。每个字中的低字节是字符的ASCII码,高字节是其属性( 背景属性 前景属性 ) 其组织方式 如下(80×25的16色文本模式): B800:0000 ;第一行第一列的字符的ASCII码 B800:0001 ;第一行第一列的字符的属性字节 B800:0002 ;第一行第二列的字符的ASCII码 B800:0003 ;第一行第二列的字符的属性字节 ... ... B800:07CE ;第25行第80列的字符的ASCII码 B800:07CF ;第25行第80列的字符的属性字节 属性字节的定义如下: 低四位是表示前景色,也就是字符颜色 位3 位2 位1 位0 0 0 0 0 黑色 0 0 0 1 蓝色 0 0 1 0 绿色 0 0 1 1 青色 0 1 0 0 红色 0 1 0 1 洋红 0 1 1 0 棕色 0 1 1 1 白色 1 0 0 0 灰色 1 0 0 1 亮蓝色 1 0 1 0 亮绿色 1 0 1 1 亮青色 1 1 0 0 亮红色 1 1 0 1 亮洋红 1 1 1 0 黄色 1 1 1 1 亮白色 高四位中位7(最高位)为1表示闪烁,为0表示不闪烁,其它三位表示背景色。 位6 位5 位4 0 0 0 黑色 0 0 1 蓝色 0 1 0 绿色 0 1 1 青色 1 0 0 红色 1 0 1 洋红 1 1 0 棕色 1 1 1 白色 实践: 有了这些资料,我们就来用QBASCI来写显存,来加深对计算机显示原理的理解 目的:往显示缓冲区写东西,看看屏幕上的结果 思路:先定义段到B800,然后写内存 如果我们要显示背景为兰色,前景为灰色的*,如下: 用QB提供的语句: COLOR 7,1 PRINT “*” 下面我们自己调用写内存的语句来直接写显存: DEF SEG=&HB800 ''定义段址 POKE 0,42 ''(42是字符*的ASC码) POKE 1,&H17 ''写字符的属性 DEF SEG ''恢复段 |
|