问题描述
我读到我们可以通过这样的代码中断直接知道当前的文本模式页面:
mov ah,15
int 10h
当前页码将返回到'bh'。我们如何在不计算也不将所有页面地址保存在常量中的情况下获取当前页面地址或偏移量。是否有具有当前工作视频缓冲区的端口指令或内存位置?
解决方法
当前视频页面与 regen 缓冲区开头的偏移量记录在 BDA 中的 0040:004e
。文本模式重新生成缓冲区位于段 b000
(对于 MDA 和 HGC 卡)和 b800
(对于所有其他卡)。使用int 11h
查询设备字节,查看是否安装了MDA卡。
有关详细信息,请参阅 this article。