问题描述
通过使用 - 例如 - 改变当前页面的中断,视频缓冲区的段地址也将改变如下:
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 的字。