在屏幕上显示字符的原理

在屏幕上显示字符的原理

只描述在IA-32e模式下的字符显示

  • 首先要有一个字符库(包含这每一个字符的像素信息, 空白的地方时0x00, 一个字符一个8x16的矩阵)
  • 每一个像素点就是一个int类型4bytes大小的整数, 该整数的每一个字节都有特定的属性用来配置显示出来的字符的样式
  • 要想实现, 需要在定义一个二维数组, 在二维数组中定义每一个字符对应的8x16矩阵的像素信息(像素值)
  • 通过printk函数实现在屏幕上显示字符串
  • 需要定义一个结构体Position, 定义在printk.h文件中

struct Position{
    // 保存着当前屏幕的分辨率
    int XResolution;
    int YResolution;

    // 保存着当前光标的位置
    int XPosition;
    int YPosition;

    // 保存着字符像素矩阵的尺寸
    int XCharSize;
    int YCharSize;

    // 保存着帧缓存区的起始地址和容量大小, 我们需要将字符像素信息写到该FrameBuffer中
    unsigned int *FB\_addr;
    unsigned long FB\_Length;
} Pos;
  • 在GNU编译器中内置了头文件stdarg.h, 我们只需要使用#include <stdarg.h>包含即可使用可变参数了
  • 在printk函数中主要处理的就是在fmt字符串中出现的\n, \b, \t, %s等参数
  • 其中\n, \b等转移字符都会修改在printk.h中定义的Pos结构体实例中的XPosition和YPosition, 比如遇到了\n, 则Pos.XPosition = 0; --Pos.YPosition;
posted @ 2018-10-11 14:52 jin_hao_chen 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值