打印到屏幕内核的基础知识



作为一个基本内核版本,我正在使用自己的构建内核打印到屏幕上。使用以下代码,我没有看到任何代码打印在屏幕上。我只使用"qemu-system-i386-kernel-kernel.bin"命令部署内核

Kernel.c

    void kmain() {
       volatile short *video = (volatile short *)(0xB8000);
       video[0] = 'h';
    }

我不擅长C,但我知道0xB8000的视频缓冲区是由(字符、属性)对组成的。它看起来不像是在写任何属性,这意味着字符可能显示为黑色背景上的黑色字母,而你看不到。

如果你添加一些属性,比如:

video[0] = ((short)'h' | 0x0F00);

这些属性应该使其显示为黑底白字。有关屏幕(以及其他内容)的更多信息,请参阅此处的OSDev Wiki。这里还有一个可用颜色的列表。

最新更新