gpt4 book ai didi

c - BIOS显存交互位置计算奇怪

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:55 24 4
gpt4 key购买 nike

我编写了一个非常简单的内核,它在 GRUB 的帮助下加载到 QEMU 中。我可能在指针计算方面有问题,但无法真正找出问题所在。

以下代码按预期工作,它打印给定的字符。

char* video = 0xb8000 + 0;
char* color = 'A';

*video++ = c;
*video++ = color;

但是,当我将视频指针计算更改为此时,它不起作用,屏幕上没有任何显示:

int pos = 0;
char* video = 0xb8000 + pos;

但是当我把pos变量设为unsigned int时,它工作不正确,但是当我把它设为1时,它作为第一个,但为什么它必须是1?

unsigned int pos = 1;
char* video = 0xb8000 + pos;

我的 cflags:CFLAGS = -std=c99 -pedantic -Wall -nostdlib -ffreestanding -g

最佳答案

也许尝试像这样添加前缀:(char*)0xB8000

char* video = (char*)0xB8000;
int pos = 0;

video[pos++] = 'A';
video[pos++] = 0x7;

关于c - BIOS显存交互位置计算奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18684707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com