x86汇编语言 屏幕是如何控制字符的显示?

字符介绍

  • 在计算机中,每个用来显示在屏幕上的字符,都有一个二进制代码。
  • 这些代码和普通的二进制数字没有什么不同,唯一的区别在于,发送这些数字的硬件和接收这些数字的硬件把它们解释为字符,而不是指令或者用于计算的数字。
  • 这就是说,在计算机中所有的东西都是无差别的数字,它们的意义只取决于生成者和使用者之间的约定。
  • 于是产生了ASCII,在前面也简单的介绍过了:

字符的打印

  • 每个字符都占用一个字(两个连续字节)的空间;
  • 屏幕上的每个字符对应着显存中的两个连续字节,前一个是字符的 ASCII 代码,后面是字符的 显示属性,包括字符颜 (前景 )和底 (背景 )。

图5-4

低字节 字符的 ASCII 代码

  • 在两连续字节中的前一个,也就是低字节中存放要打印的字符的十六进制代码。
  • 该十六进制代码就是 ASCII表 中字符的码值,然后换算成十六进制的形式存放在低字节中。
  • 比如字符“ * ”,它的代码是二进制数的 010 1010,即 0x2A。

高字节 字符的显示属性

  • 字符的显示属性(1 字节,8位)分为两部分,低 4 位定义的是前景色,高 4 位定义的是背景色。

  • 色彩主要由 R、G、B 这 3 位决定,毕竟我们知道,可以由红(R)、绿(G)、蓝 (B)三原色来配出其他所有颜色。

  • K 是闪烁位,为 0 时不闪烁,为 1 时闪烁;

  • I 是亮度位,为 0 时正常亮度,为 1 时呈高亮。

  • 比如:常见的字符属性 0x07 可以解释为黑底白字,无闪烁,无加亮。

表5-2

显示“黑屏”

  • 当屏幕上一片漆黑,什么内容都没有的时候,显存里会是什么内容呢?
  • 实际上,所谓的黑屏就是屏幕上全是黑底白字的空白字符,也叫空格字符(Space)。
  • 因为它是空白,自然就无法在黑底上看到任何痕迹了,从而显示出黑屏。

标号使用的注意事项

  1. 标号之后的冒号是可选的。所以下面的写法也是正确的:
    	infi jmp near infi
    
  2. 标号并不是必需的,只有在我们需要引用某条指令的汇编地址时,才使用标号。
  3. 标号可以单独占用一行的位置,像这样:
    	infi:
    			jmp near infi
    
    但因为 infi 所在的那一行没有指令,它的地址就是下一行的地址,换句话说,和下一行的地址是相同的。
  4. 标号可以由字母、数字、“”、“$”、“#”、“@”、“~”、“.”、“?”组成,但必须以字母、“.”、“”和“?”中的任意一个打头。

资料参考

  • 《x86汇编语言:从实模式到保护模式》(编著:李忠 王晓波 余洁)
发布了29 篇原创文章 · 获赞 42 · 访问量 8495

猜你喜欢

转载自blog.csdn.net/qq_43068326/article/details/104738995