使用vga将消息打印到屏幕上

时间:2018-05-04 12:29:08

标签: c operating-system kernel osdev vga

我正在尝试编写一个函数,它将使用VGA文本模式缓冲区将消息打印到屏幕上。 这是打印单个字符的函数:

void putc(uint8_t c, enum Color term_color)
{
    uint8_t *vidptr = (uint8_t*)0xB8000;

    *vidptr = c;
    vidptr++;
    *vidptr = (uint8_t*)term_color;
    vidptr++;
}

这是我要打印字符串的功能:

void puts(const uint8_t* str, enum Color term_color)
{
    for(size_t i = 0; i != '\0'; i++) {
        putc(str[i], term_color);
    }
}

但它没有打印任何东西。只有黑屏,光标闪烁。

编辑:第一个打印单个字符的功能。

1 个答案:

答案 0 :(得分:1)

功能

  

putc(uint8_t c,enum Color term_color)

始终将角色置于相同位置(0xB8000) 你需要声明

  

uint8_t * vidptr

在函数外部,每次调用都正确递增它。