当前视频缓冲区段地址是否记录在内存位置?

问题描述

通过使用 - 例如 - 改变当前页面的中断,视频缓冲区的段地址也将改变如下:

mov ah,5
mov al,1
int 10h

例如,我现在在文本模式下,我的 VGA 在第 0 页的段是 0B800h,现在在上一次中断之后该段将是 0B900,它被记录在内存中或者我们必须计算它,因为这些地址是固定的吗?

解决方法

当前视频缓冲区段地址未记录在内存中。 BIOS 不会那样使用它。

BIOS 在 BIOS 数据区记录有关页面的信息

                                                              80x25
                                                              -----
word 0040:004C  Size in bytes of the display memory page    = 4000
word 0040:004E  Offset to the current display page          = 4096
byte 0040:0062  Number of the active display page           = 1

在 80x25 文本视频模式下,BIOS 仅处理段值 B800h 并改变偏移量以到达正确的输出页面。 BIOS 首先计算请求页面的偏移量,然后添加来自地址 0040:004E 的字。