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

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

我或许可以从我对早期大学生的记忆中得到部分帮助。

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

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

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

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

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

看看它是否适合你。