80x25彩色字符模式下显示缓冲区的结构:

在内存地址空间中,B8000H~BFFFFH共32KB的空间,为80x25彩色字符模式的显示缓冲区。往这个地址空间中写入数据,写入的内容会立即出现在显示器上

在80x25彩色字符模式下,显示器每行可以显示80个字符,可以显示25行。所以称为80x25,彩色字符模式是因每个字符可以有256种颜色属性(背景色,前景色,闪烁,高亮等)

这样一个字符需要占用一个字节的数据+一个字节的颜色属性(256种即8位,即一个字节),低位字节存储字符的ASCII码,高位字节存储字符的颜色属性。

一个字符需要占2字节内存,一屏幕共80x25=2000个字符,占用4000字节, 所以B8000H~BFFFFH共32KB的空间共可以存放8页的彩色字符数据。

一般情况下显示第一页的字符数据,即B8000H~B8F9FH中的4000个字节存放的彩色字符将显示在屏幕上。

一行共80个彩色字符,即160个字节:

B8000H~B809FH 对应显示器第1行

B80A0H~B813FH 对应显示器第2行

B8140H~B81DFH 对应显示器第3行

。。。

B8F00H~B8F9FH 对应显示器第25行

一个彩色字符占2字节,一行80个彩色字符占160个字节即10H:

00~01 对应显示器上第1列

02~03 对应显示器上第2列

04~05 对应显示器上第3列

.。。。

9E~9F 对应显示器上第80列

颜色属性的格式

颜色属性占1个字节即8位:

  7  6  5  4  3  2  1  0

含义  BL       R      G       B       I        R       G      B

闪烁     (456- 背景)        高亮       (012-前景)

R-红     G-绿   B-蓝

可以按位设置不同的属性字节,配出各种不同的前景色和背景色:

红底绿字   01000010B,16进制显示为42H

(第7位闪烁,不需要所以为0,第6位背景红色需要设为1,第5位不需要0.。。。。)

例: 在显示器0行0列显示红底高亮闪烁绿色的字符串’ABCDEF':

  ①按位设置颜色属性为: 11001010B,16进制显示为CAH

  ②ABCDEF对应的ASCII码分别为 41H,42H,43H,44H,45H,46H

③显示器的0行0列对应的内存地址为 B8000H,6个彩色字符占用12个字节,即应写在B8000~B800BH内存空间中

显示缓冲区中的内容为:

        00  01  02  03  04  05  06  07  08  09  0A  0B  ...

B800:0000      41  CA  42  CA  43  CA  44  CA  45  CA  46  CA  ...

(闪烁效果需要在全屏DOS方式下才能看到)

最新文章

  1. gradlew wrapper使用下载到本地的gradle.zip文件装配--转
  2. python 3 学习笔记(二)
  3. 用minidwep-gtk研究wifi
  4. 【转】java的socket编程
  5. python - 简明 性能测试
  6. Shell中调用、引用、包含另一个脚本文件的三种方法
  7. Spring、Spring依赖注入与编码剖析Spring依赖注入的原理
  8. 使用NGUI实现拖拽功能(拼图小游戏)
  9. MySQL数据库操作常用命令
  10. Python实现Singleton模式的几种方式
  11. http类中的download方法 下载汉字文件名 汉字消失的问题
  12. Android Studio运行项目报错:Error:null value in entry: annotationProcessorOutputFolder=null的解决方案
  13. foreach退出循环(新人请多多关照~)
  14. INS-20802 Oracle Cluster Verification Utility failed解释说明
  15. 怎样设置table中td的高度为1px
  16. 下载组件Jspsmartupload中文乱码解决办法
  17. Node.js综述
  18. 【题解】洛谷P3435 [POI2006] OKR-Periods of Words(KMP)
  19. 打印机无法使用且无法重新安装,提示spooler service is not running
  20. alter table锁表,MySQL出现Waiting for table metadata lock的场景浅析及解决方案

热门文章

  1. Call to undefined function Think\C()
  2. 金士顿DT100 G3 PS2251-07海力士U盘量产修复成功教程
  3. C# 随机串的生成
  4. javascript的caller,callee,call,apply[转]
  5. Java内存模型(转载)
  6. Spring Boot专题背景简介
  7. 反射:获取Class对象的三种方式
  8. Jquery 【on事件】
  9. Mysql内置功能《三》视图
  10. 洛谷P2495 [SDOI2011]消耗战(虚树)