gpt4 book ai didi

c - 使用 dos.h 在 TSR 编程中使用 keep(int,int) 函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:04 25 4
gpt4 key购买 nike

在学习 tsr 编程时,我看到了某些我无法理解的代码的使用..

示例割让部分是(在 c 中):(请解释粗体部分)

#include "dos.h"
#include"stdio.h"
void interrupt our();
void interrupt (*prev)();
char far *scr=(char far*)0xB8000000L;
int ticks;
unsigned char color;
main()
{
prev=getvect(8); // <<<<<
setvect(8,our); // <<<<<
keep(0,10000); // <<<<<
}

最佳答案

如果您阅读我在 TSR 上发布的类似问题的答案,您将部分理解这段代码

How to write a TSR which changes case of characters

这里最重要的是

远指针:由于 16 位 DOS 使用段偏移寻址方案,您的普通近指针无法访问超出其分配段的 64K 的内存。您必须阅读详细信息才能理解它。

显存地址:这个B8000000就是你需要远指针的地址。该地址的特殊之处在于,从该位置开始的字节(等于屏幕分辨率*2)被直接复制到显存中。

因此,如果您在间接寻址后将字符分配给指针地址,它将打印在屏幕上

有点像

char * far p = 0xB8000000;

*p = 'a'; // this would actually print a on screen at left top

向前循环以到达屏幕的其余部分。

yashwant kanetkar 的一本 c 语言书籍对此有很多引用。我记得很多年前在我的本科生中使用过它。

其余的只是索引 dos.h 中的 api。如果您有任何不明白的地方,为什么不仔细阅读他们的描述并返回此处?

关于c - 使用 dos.h 在 TSR 编程中使用 keep(int,int) 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12826029/

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