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

Assembly 当前视频缓冲段地址是否记录在内存位置?,assembly,x86,x86-16,bios,vga,Assembly,X86,X86 16,Bios,Vga,例如,通过使用中断来更改当前页面,视频缓冲区的段地址也将更改,如下所示: mov ah, 5 mov al, 1 int 10h 例如,我现在处于文本模式,第0页的VGA段为0B800h,上一次中断后,该段将为0B900,记录在内存中,或者我们必须计算它,因为这些地址是固定的?当前视频缓冲区段地址未记录在内存中。BIOS没有这样使用它 BIOS在BIOS数据区域中记录有关页面的信息

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

mov ah, 5
mov al, 1
int 10h

例如,我现在处于文本模式,第0页的VGA段为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中的字。

当前视频缓冲区段地址不记录在内存中。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中的单词。

。如果您使用BIOS功能,您可以将页面指定为调用的一部分。我计划用Turbo Pascal编写一个程序,该程序将自动知道当前活动页面段,以便直接向其键入字符,而无需调用中断来了解活动页面。建议在
40h:62h处的字节中找到它。我还没有测试。如果你知道你已经处于文本模式,并且你知道你的文本视频的基础是0b800h,那么在执行
mov ah,5
mov al,1
int 10h
之后。当您使用BIOS中断视频信息时,它们会反映在中的数据中。尤其是0000:44eh处的字值是从段b800h开始的字节偏移量(如果处于彩色文本模式)。您可以将值B800h放入ES,将字值从0000:44eh复制到BX,然后使用
mov word ptr[ES:BX]写入视频内存,将5661h
写入当前页面的左上角。这取决于您访问视频内存的方式。如果您使用BIOS功能,您可以将页面指定为调用的一部分。我计划用Turbo Pascal编写一个程序,该程序将自动知道当前活动页面段,以便直接向其键入字符,而无需调用中断来了解活动页面。建议在
40h:62h处的字节中找到它。我还没有测试。如果你知道你已经处于文本模式,并且你知道你的文本视频的基础是0b800h,那么在执行
mov ah,5
mov al,1
int 10h
之后。当您使用BIOS中断视频信息时,它们会反映在中的数据中。尤其是0000:44eh处的字值是从段b800h开始的字节偏移量(如果处于彩色文本模式)。您可以将值B800h放入ES,将字值从0000:44eh复制到BX,然后使用
mov word ptr[ES:BX]将其写入视频内存,将5661h
写入当前页面的左上角。