gpt4 book ai didi

graphics - 如果文本模式视频缓冲区不在 0xB8000,那么它在哪里?

转载 作者:行者123 更新时间:2023-12-02 15:25:01 25 4
gpt4 key购买 nike

大约 15 年前,我曾经通过编写直接修改显示器上文本的糟糕代码来取悦自己并惹恼我的计算机老师。通过访问配备 VGA 的 PC 兼容机上 0xB8000 处的视频内存,可以轻松完成此操作。

快进到今天,我决定通过调试端口尝试我的老技巧,该端口使我能够读取物理内存。令我满意的是,它在我尝试的第一个平台上仍然有效。然后,令人沮丧的是,我发现它在许多其他系统上不起作用。它似乎不适用于所有具有 UMA(共享内存)显卡的系统。

所以,有一个问题要问你们所有 BIOS 编写者、低级操作系统人员和视频驱动程序专家 - 如果我在具有共享图形内存的 PC 兼容系统上处于常规 80x25 彩色文本模式,处于实模式,并且0xb8000 - 0xB8FFF 的内容都是 0xFF 而不是给我屏幕上的内容,屏幕缓冲区去了哪里?

最佳答案

啊,如果是 BIOS 屏幕,那么所有的赌注都失败了。事实上,它是带有集成显卡的主板上的 BIOS,这使得它更加有利于视频的陌生感。

很可能“经典”VGA 功能是为了模拟所有意图。对于外部显卡,BIOS 将看不到这一点 - 它仍然会看到 VGA 显卡。但是硬连线到显卡的 BIOS 不需要设置假 VGA 层和老式 20 位地址空间内存映射,只是为了在屏幕上粘贴一些文本。

相反,BIOS 可以直接与卡连接(通过某种专有模式),直到操作系统实际启动,此时它会自行进行内存映射。这样做的一个主要优点是,对于共享主内存的显卡,如果 RAM 安装不正确,启动时不会出现空白屏幕(相反,显卡专有 BIOS 模式可以使用通常为其他目的保留的缓冲区,允许您进入 BIOS 并查看已安装的 0MB RAM)

关于graphics - 如果文本模式视频缓冲区不在 0xB8000,那么它在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1165494/

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