字符介绍
- 在计算机中,每个用来显示在屏幕上的字符,都有一个二进制代码。
- 这些代码和普通的二进制数字没有什么不同,唯一的区别在于,发送这些数字的硬件和接收这些数字的硬件把它们解释为字符,而不是指令或者用于计算的数字。
- 这就是说,在计算机中所有的东西都是无差别的数字,它们的意义只取决于生成者和使用者之间的约定。
- 于是产生了ASCII,在前面也简单的介绍过了:
字符的打印
- 每个字符都占用一个字(两个连续字节)的空间;
- 屏幕上的每个字符对应着显存中的两个连续字节,前一个是字符的 ASCII 代码,后面是字符的 显示属性,包括字符颜 (前景 )和底 (背景 )。
低字节 字符的 ASCII 代码
- 在两连续字节中的前一个,也就是低字节中存放要打印的字符的十六进制代码。
- 该十六进制代码就是 ASCII表 中字符的码值,然后换算成十六进制的形式存放在低字节中。
- 比如字符“ * ”,它的代码是二进制数的 010 1010,即 0x2A。
高字节 字符的显示属性
-
字符的显示属性(1 字节,8位)分为两部分,低 4 位定义的是前景色,高 4 位定义的是背景色。
-
色彩主要由 R、G、B 这 3 位决定,毕竟我们知道,可以由红(R)、绿(G)、蓝 (B)三原色来配出其他所有颜色。
-
K 是闪烁位,为 0 时不闪烁,为 1 时闪烁;
-
I 是亮度位,为 0 时正常亮度,为 1 时呈高亮。
-
比如:常见的字符属性 0x07 可以解释为黑底白字,无闪烁,无加亮。
显示“黑屏”
- 当屏幕上一片漆黑,什么内容都没有的时候,显存里会是什么内容呢?
- 实际上,所谓的黑屏就是屏幕上全是黑底白字的空白字符,也叫空格字符(Space)。
- 因为它是空白,自然就无法在黑底上看到任何痕迹了,从而显示出黑屏。
标号使用的注意事项
- 标号之后的冒号是可选的。所以下面的写法也是正确的:
infi jmp near infi
- 标号并不是必需的,只有在我们需要引用某条指令的汇编地址时,才使用标号。
- 标号可以单独占用一行的位置,像这样:
但因为 infi 所在的那一行没有指令,它的地址就是下一行的地址,换句话说,和下一行的地址是相同的。infi: jmp near infi
- 标号可以由字母、数字、“”、“$”、“#”、“@”、“~”、“.”、“?”组成,但必须以字母、“.”、“”和“?”中的任意一个打头。
资料参考
- 《x86汇编语言:从实模式到保护模式》(编著:李忠 王晓波 余洁)