当前位置: 技术问答>linux和unix
已经由DOS实模式进入保护模式(可以在DOS访问32位指针),但具体不知怎样用?
来源: 互联网 发布时间:2014-12-09
本文导语: 已经由DOS实模式进入保护模式(可以在DOS访问32位指针),dos里内存0xa000:0000开始64K内存段和视屏内存512K-2M分页对应,现在既然我已经可以访问4GB内存了,怎样将0xa0000的视屏内存搬到1M以上,省得换页了?谢谢 | ...
已经由DOS实模式进入保护模式(可以在DOS访问32位指针),dos里内存0xa000:0000开始64K内存段和视屏内存512K-2M分页对应,现在既然我已经可以访问4GB内存了,怎样将0xa0000的视屏内存搬到1M以上,省得换页了?谢谢
|
我在BP7(相当于C++)下,用过保护模式来作1024*768,256色的彩色图形,它要求地址不能再绝对地址(如0xa000:0000)的形式给出(这样就变成你独用了),否则就出206号错误,而必须改为(sega000:0000)的形式,其中sega000是段变量,其值由系统分配,无需你自己考虑.
在BP7中,换页仍是要做的,也就是说,内存虽已扩大,但还是用段表示的,每一段的大小仍受64K的限制,你若想在显示内存的超过64K的字节中存取数据,必须进行换页.
但在C++中我没有试过,不知采用巨模式后,是否可以不受此限制.或许是可能的,但我想这时你也不可以用0xa000:0000为首址的1M个绝对地址.
在BP7中,换页仍是要做的,也就是说,内存虽已扩大,但还是用段表示的,每一段的大小仍受64K的限制,你若想在显示内存的超过64K的字节中存取数据,必须进行换页.
但在C++中我没有试过,不知采用巨模式后,是否可以不受此限制.或许是可能的,但我想这时你也不可以用0xa000:0000为首址的1M个绝对地址.
|
要想在PM下访问不分页显存,需要看VESA规范,而不是讨论如何进入PM的问题!