TSR程序在windows / dos中更改屏幕上的字符大小写

时间:2012-10-10 18:01:17

标签: c tsr

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

1 个答案:

答案 0 :(得分:1)

我或许可以部分地帮助我记得我早期的本科生。

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

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

我记得使用上面写的相当于一个普通的printf函数。

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

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

看看它是否适合你。