我读到我们可以通过类似以下代码的中断直接了解当前的文本模式页面:
mov ah, 15
int 10h
当前页码将返回到“ bh”。我们如何获取当前页面地址或偏移量而无需计算它或将所有页面地址保存为常量。是否有端口指令或内存位置具有当前有效的视频缓冲区?
当前视频页面与再生缓冲区开头之间的偏移量记录在BDA中的处0040:004e
。在b000
MDA和HGC卡的段以及b800
所有其他卡的段中都可以找到文本模式再生缓冲区。使用int 11h
来查询设备字节,以查找是否已安装MDA卡。
有关更多详细信息,请参阅本文。
尽管可以使用
Int 11h
该选项,但只会在启动时告诉您默认的显示,而不必将BIOS当前正在写入的卡作为默认显示。恕我直言,如果您想知道BIOS正在使用的当前文本再生缓冲区的地址,请检查0040:0063。如果返回3B4h,则为单色,因此当前活动的再生buf段为b000h,否则为0b800h。我仅在您试图找出BIOS例程当前正在写入的再生缓冲区时提及(这可能是双头系统)。