Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何在VBE中获得宽屏分辨率_Assembly_Driver_Bios_Vbe_Widescreen - Fatal编程技术网

Assembly 如何在VBE中获得宽屏分辨率

Assembly 如何在VBE中获得宽屏分辨率,assembly,driver,bios,vbe,widescreen,Assembly,Driver,Bios,Vbe,Widescreen,我正在编写图形采用程序驱动程序。我知道VBE提供1024×768或800×600等分辨率。我的问题是如何在VESA BIOS?中获得1366×768等宽屏幕分辨率,应该使用哪个BIOS功能?。请给我1366x786(或其他)的模式功能编号,例如0117h用于1024x768 16位颜色。我使用的是x86汇编和VBE3。如果您使用的是VBE,您应该熟悉模式列表函数4F00和4F01。如果您的BIOS提供这样的自定义模式,请使用这些来查找适当的自定义模式。否则,您可以尝试更高分辨率的模式,传入约束垂

我正在编写图形采用程序驱动程序。我知道VBE提供1024×768或800×600等分辨率。我的问题是如何在VESA BIOS?中获得1366×768等宽屏幕分辨率,应该使用哪个BIOS功能?。请给我1366x786(或其他)的模式功能编号,例如0117h用于1024x768 16位颜色。我使用的是x86汇编和VBE3。

如果您使用的是VBE,您应该熟悉模式列表函数
4F00
4F01
。如果您的BIOS提供这样的自定义模式,请使用这些来查找适当的自定义模式。否则,您可以尝试更高分辨率的模式,传入约束垂直大小的覆盖CRTC参数。但是,不保证这会起作用。

所有信息都在vesa.org的vbe3.pdf中:“注意:从VBE 2.0版开始,vesa将不再定义新的vesa模式编号,并且不再强制支持这些旧模式编号。”

但一些较新的PCIe卡,如Nvidia GTX 295(来自制造商Colofull)和Radeon 7950(Saphire),也允许我使用它们的宽屏视频模式,但模式编号不同,并且因BIOS和制造商而异。最后,我想分享上面两张卡的modetable

第一步是调用函数4F00h,以便在512字节的缓冲区中获取VBE信息。如果呼叫成功,则在AX中返回4Fh

下一步是检查地址缓冲区+5处VBE BIOS的主要版本号(如果值为2、3或1)。从VBE 2开始,我们必须从VBE Bios本身获取模式编号

下一步是从地址:buffer+0Eh获取modetable的指针,使用该指针我们可以获取modenumber。每个模式编号为16位an,模式表以0FFFFh结尾

下一步是调用函数4F01h for,在256字节的单独缓冲区中获取每个modenumber的特定于模式的信息,以找到我们想要使用的分辨率和每像素位数

)-----

从VBE 3开始,可以使用我们自己的CRTC参数表来获得更高的刷新率,切换到一个给定的分辨率和给定的纵横比,我们不能以这种方式更改。我将其与19英寸CRT显示器一起使用,显示器容量为96khz和160hz,例如1280x1024和85hz,或1024x768和100hz,800x600和140hz,640x480和160hz刷新率。但我的28英寸LCD仅提供一个1920x1200和60hz的本机分辨率,但宽屏宽高比为16:10

------------------------------------- 
VBE Modelist Saphire 7950
------------------------------------- 
mode
number xres yres bpp LFB
0100 640x400x8 C0000000 VGA 4:3
0101 640x480x8 C0000000 VGA 4:3
0103 800x600x8 C0000000 SVGA 4:3
0105 1024x768x8 C0000000 XGA 4:3
0107 1280x1024x8 C0000000 SXGA 5:4
0110 640x480x16 C0000000 VGA 4:3
0111 640x480x16 C0000000 VGA 4:3
0113 800x600x16 C0000000 SVGA 4:3
0114 800x600x16 C0000000 SVGA 4:3
0116 1024x768x16 C0000000 XGA 4:3
0117 1024x768x16 C0000000 XGA 4:3
0119 1280x1024x16 C0000000 SXGA 5:4
011A 1280x1024x16 C0000000 SXGA 5:4
010D 320x200x16 C0000000 CGA 4:3
010E 320x200x16 C0000000 CGA 4:3
0120 320x200x32 C0000000 CGA 4:3
0193 320x240x8 C0000000 QVGA 4:3
0195 320x240x16 C0000000 QVGA 4:3
0196 320x240x32 C0000000 QVGA 4:3
01B3 512x384x8 C0000000 4:3
01B5 512x384x16 C0000000 4:3
01B6 512x384x32 C0000000 4:3
01C3 640x350x8 C0000000 EGA 4:3
01C5 640x350x16 C0000000 EGA 4:3
01C6 640x350x32 C0000000 EGA 4:3
0133 720x400x8 C0000000 WVGA 18:10
0135 720x400x16 C0000000 WVGA 18:10
0136 720x400x32 C0000000 WVGA 18:10
0153 1152x864x8 C0000000 XGA 4:3
0155 1152x864x16 C0000000 XGA 4:3
0156 1152x864x32 C0000000 XGA 4:3
0163 1280x960x8 C0000000 VGA 4:3
0165 1280x960x16 C0000000 VGA 4:3
0166 1280x960x32 C0000000 QVGA VGA 4:3
0121 640x480x32 C0000000 VGA 4:3
0122 800x600x32 C0000000 SVGA 4:3
0123 1024x768x32 C0000000 XGA 4:3
0124 1280x1024x32 C0000000 SXGA 5:4
0143 1400x1050x8 C0000000 SXGA+ 4:3
0145 1400x1050x16 C0000000 SXGA+ 4:3
0146 1400x1050x32 C0000000 SXGA+ 4:3
0173 1600x1200x8 C0000000 UXGA 4:3
0175 1600x1200x16 C0000000 UXGA 4:3
0176 1600x1200x32 C0000000 UXGA 4:3
0183 1792x1344x8 C0000000
0185 1792x1344x16 C0000000
0186 1792x1344x32 C0000000
01D3 1856x1392x8 C0000000
01D5 1856x1392x16 C0000000
01D6 1856x1392x32 C0000000
01E3 1920x1440x8 C0000000 4:3
01E5 1920x1440x16 C0000000 4:3
01E6 1920x1440x32 C0000000 4:3
01D1 1920x1200x8 C0000000 WUXGA 16:10
01D2 1920x1200x16 C0000000 WUXGA 16:10
01D4 1920x1200x32 C0000000 WUXGA 16:10

------------------------------------- 
VBE Modelist Colorfull Geforce GTX295
------------------------------------- 
mode
number xres yres bpp
0100 640x480x8 VGA 4:3
0101 640x480x8 VGA 4:3
0102 800x600x4 SVGA 4:3
0103 800x600x8 SVGA 4:3
0104 1024x768x4 XGA 4:3
0105 1024x768x8 XGA 4:3
0106 1280x1024x4 SXGA 5:4
0107 1280x1024x8 SXGA 5:4
010E 320x200x16 CGA 4:3
010F 320x200x32 CGA 4:3
0111 640x480x16 VGA 4:3
0112 640x480x32 VGA 4:3
0114 800x600x16 SVGA 4:3
0115 800x600x32 SVGA 4:3
0117 1024x768x16 XGA 4:3
0118 1024x768x32 XGA 4:3
011A 1280x1024x16 SXGA 5:4
011B 1280x1024x32 SXGA 5:4
0130 320x200x8 CGA 4:3
0131 320x400x8
0132 320x400x16
0133 320x400x32
0134 320x240x8 QVGA 4:3
0135 320x240x16 QVGA 4:3
0136 320x240x32 QVGA 4:3
013D 640x400x16
013E 640x400x32
0145 1600x1200x8 UXGA 4:3
0146 1600x1200x16 UXGA 4:3
014A 1600x1200x32 UXGA 4:3
0160 1280x800x8 WXGA 16:10
0161 1280x800x32 WXGA 16:10
0162 768x480x8
017B 1280x720x32 
017C 1920x1200x8 WUXGA 16:10
017D 1920x1200x32 WUXGA 16:10

VBE3的CRCT参数只能更改定时(例如刷新率),排除“双扫描模式”不能更改分辨率。双扫描模式使分辨率减半。基本上;如果坏软件错误地假定像素为正方形,那么这将无助于解决坏软件的问题。因为您可以指定
HTotal
VTotal
,从理论上讲,也可以更改可见分辨率。使用HTotal和VTotal,我们只能更改分辨率的位置,以使屏幕在可见区域居中,但不能使用它更改分辨率。我使用的是ati radeon HD,我可以拥有可用视频模式的列表吗?可以,只需启动我的VESAMODI.exe即可获得模型师:www.alice-dsl.net/freecracmaps/Tool/VESAMODI.zip