c - 使用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);
}
}
但它不打印任何东西。只有黑屏和闪烁的光标。
编辑:打印单个字符的第一个功能有效。
解决方案
功能
putc(uint8_t c, 枚举颜色 term_color)
始终将字符放在相同的位置(0xB8000)。
你需要声明
uint8_t *vidptr
在函数外部正确递增每次调用。
推荐阅读
- php - 在 PHP 中关闭套接字
- flask - 使用 Flask-Babel 从 Jinja2 模板中的列表翻译元素
- java - Groovy 2.5.0 为方法调用转换提供 noclassdeffounderror
- python - 在第三方 API 函数中传递两个列表
- swift - didUpdateLocations 只能调用一次
- java - 如何将数值数组作为字符串转换为字节数组?
- sql - 识别带有前缀或后缀的重复发票号码
- maven - Maven:如何在同一阶段以特定顺序对目标的多次执行进行排序
- javascript - 我在 MozilaFirefox 上遇到了 bootstrap 的日期时间选择器的问题
- r - 如何更改滚动平均函数的目标列类型