2

我想知道如何使用 C 更改屏幕上字符的字母。这是一个使用 dos.h 头文件的 TSR 程序。

4

1 回答 1

1

我可能能够部分帮助我记得我早期的本科生。

在 DOS 中,地址0xB8000000(0xB800:0 作为段:注释中正确指出的偏移量)是文本模式视频内存的起始地址(0xA8000000是图形的起始地址)。写入该区域的任何内容都直接复制到VGA卡。现在屏幕上的每个字符都由两个字节组成。第一个字节是 ascii 字符,第二个是颜色。

因此,您可以有效地在 16 位 c 中获取一个远指针(因为普通的近指针不会这样做)并将其分配给上述地址。然后假设您的屏幕尺寸 (25*80) 或任何 * 2 是填充屏幕的单字节地址总数。

我记得我用上面写了一个普通的 printf 函数的等价物。

回到你的问题,你必须编写代码来循环从上面的地址开始直到屏幕大小的所有偶数地址。偶数地址,因为奇数代表颜色。它在那里检查分配的字符是否是有效的 ascii 并根据需要添加或减去,例如 'A' + 32 会让你得到 'a' 等等。

关于您的上述程序何时执行此操作的问题仍然存在。我相信你可以在 dos.h 中有一些中断或类似的事情,每次更改任何屏幕字符时都会触发。但这部分在我的记忆中不是很清楚。

看看这是否适合你。

于 2012-10-10T18:42:59.667 回答