使用 vga 将消息打印到屏幕上
Printing message onto the screen using 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 != '[=11=]'; i++) {
putc(str[i], term_color);
}
}
但是它不打印任何东西。只有黑屏,光标闪烁。
编辑:打印单个字符的第一个函数有效。
函数
putc(uint8_t c, enum Color term_color)
始终将字符放在相同位置 (0xB8000)。
您需要声明
uint8_t *vidptr
在函数外部正确地递增它每次调用。
我正在尝试编写一个函数,使用 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 != '[=11=]'; i++) {
putc(str[i], term_color);
}
}
但是它不打印任何东西。只有黑屏,光标闪烁。
编辑:打印单个字符的第一个函数有效。
函数
putc(uint8_t c, enum Color term_color)
始终将字符放在相同位置 (0xB8000)。
您需要声明
uint8_t *vidptr
在函数外部正确地递增它每次调用。