简体   繁体   English

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

[英]Is the current video buffer segment address recorded in a memory location?

By using - for example - an interrupt to change the current page, the segment address of the video buffer will be changed too like after:通过使用 - 例如 - 一个中断来改变当前页面,视频缓冲区的段地址也将被改变,如下所示:

mov ah, 5
mov al, 1
int 10h

For example, I'm now in text mode, the segment of my VGA at page 0 is 0B800h, now after previous interrupt the segment will be 0B900, where it is recorded in memory or we have to calculate it because these addresses are fixed ones?例如,我现在处于文本模式,我的 VGA 在第 0 页的段是 0B800h,现在在之前的中断之后段将是 0B900,它记录在 memory 中,或者我们必须计算它,因为这些地址是固定的?

The current video buffer segment address is not recorded in memory. BIOS doesn't use it that way. memory 中没有记录当前的视频缓冲区段地址。BIOS 不会那样使用它。

BIOS records this info about pages in the BIOS Data Area 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

In the 80x25 text video mode BIOS only deals with the segment value B800h and varies the offset to arrive at the correct output page.在 80x25 文本视频模式中,BIOS 仅处理段值 B800h 并改变偏移量以到达正确的 output 页。 BIOS first calculates the offset within the requested page, and then adds the word from address 0040:004E. BIOS 首先计算请求页的偏移量,然后添加地址 0040:004E 中的字。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM