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方式下才能看到)

80x25彩色字符模式的更多相关文章

  1. [SAP ABAP开发技术总结]以二进制、字符模式下载文件

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. Debian字符模式下修改显示分辨率

    Debian字符模式下修改显示分辨率 一.准备工具 a) Git apt-get install git 二.获取屏幕修改辅助软件 a) 创建临时文件 mkdir /tmp/screenModify ...

  3. SwingBench 字符模式压测最佳实践

    之前写过<使用SwingBench 对Oracle RAC DB性能 压力测试>,使用的是最基础直观的图形模式,已经可以满足大多数需求. 但是在有些场景下,图形模式可能本身消耗资源过大,尤 ...

  4. [笔记]Go语言在Linux环境下输出彩色字符

    Go语言要打印彩色字符与Linux终端输出彩色字符类似,以黑色背景高亮绿色字体为例: fmt.Printf("\n %c[1;40;32m%s%c[0m\n\n", 0x1B, & ...

  5. Linux字符模式下如何设置/删除环境变量

    Linux字符模式下设置/删除环境变量方法: bash下 设置:export 变量名=变量值 删除:unset 变量名 csh下 设置:setenv 变量名 变量值 删除:unsetenv 变量名 h ...

  6. systemctl服务------字符和图像界面切换systemctl set-default multi-user.target systemctl isolate multi-user.target #当前立即进入字符模式 [root@room4pc09 桌面]# systemctl isolate graphical.target #当前立即进入图形模式

    查看服务运行状态 [root@room4pc09 桌面]# systemctl status crond #查看服务运行状态 ● crond.service - Command Scheduler L ...

  7. 字符模式console usb串口安装centos

    黄色部分是使用console口安装centos需要使用text模式,可以参考前文,同时镜像路径也是需要指定的,来自/dev/sda4 U盘 setparams 'Install CentOS 7' l ...

  8. python识别图片生成字符模式

    此python文件来自D7哥, 放在这里备份. 用法 python3 PIL\&argparse.py 1.jpg -o test.txt --width 300 --height 300 p ...

  9. linux用字符模式修改权限

    -rw-r--r--  tt.htm 从第二个字符起rw是说用户apple有读.写权,没有运行权,接着的r--表示用户组users只有读权限,没有运行权,最后的r--指其他人 (others)只有读权 ...

随机推荐

  1. 一款基于uploadify扩展的多文件上传插件,完全适用于Html5

    http://www.uploadify.com/documentation/  官网里面有两个插件,一个是要使用flash插件才能文件上传的插件,另外一个是不需要使用要flash插件的文件上传插件完 ...

  2. OpenCV 4 Android

    OpenCV4Android Want a Quick Start link? Use this tutorial: “OpenCV for Android SDK”. 想要快速开始吗?使用这个教程: ...

  3. WebService搭建

    好久没有用WebService了,今天想复习一下原来的技术,结果错误百出. 这几天重装了系统,所有的东西都要重新配置,导致了很多原来没有发生过的问题,在这里做个笔记,希望以后不会再有这样的错误.

  4. requestAnimationFrame 定时器

    这个方法是通过递归调用同一方法来不断更新画面以达到动起来的效果,但它优于setTimeout/setInterval的地方在于它是由浏览器专门为动画提供的API,在运行时浏览器会自动优化方法的调用,并 ...

  5. 《FilthyRichClients》读书笔记(一)-SwingのEDT

    <FilthyRichClients>读完了前几个章节,现将我的体会结合工作以来从事Swing桌面开发的经验,对本书的一些重要概念进行一次 分析,对书中的一些遗漏与模糊的地方及时补充,同时 ...

  6. 从Entity Framework的实现方式来看DDD中的repository仓储模式运用

    一:最普通的数据库操作 static void Main(string[] args) { using (SchoolDBEntities db = new SchoolDBEntities()) { ...

  7. IE8下window.open 二次无法加载页面

    我原先的IE是系统默认自带的IE7,升级到IE8之后,就出现了此现象: 打开一个窗口(window.open方式)后,再打开时,新窗口的页面显示空白,无法加载其内容.关闭ie后,重新偿亦是如此,第一次 ...

  8. PMBOK项目管理相关知识梳理

    该次梳理,依据PMBOK(第五版),罗列项目管理十三章节重要的知识点. 一.引论1.项目的定义与举例:2.项目.项目组合.项目集与项目组织管理:3.范进本质是风资(范围.进度.成本.质量.风险.资源) ...

  9. [Erlang01] 使用catch与try catch避免嵌套nest_case

    catch 如此好用,为什么官方还是推荐用try catch? 1. catch 的用法非常简单: catch case do_check(Test) of {ok,Result} -> do_ ...

  10. C#多线程编程实战1.1创建线程

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...