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汇编语言:从实模式到保护模式》(编著:李忠 王晓波 余洁)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MoMing丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值