📄 vesa编程介绍.htm
字号:
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN face=宋体>编程和</FONT><FONT
face="Times New Roman">INTEL iAPX </FONT><FONT lang=ZH-CN
face=宋体>实模式汇编语言有一定的了解。对于</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>编程不熟悉的读者请在尝试了解对于标准</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>扩展之前先选择阅读大量现有的</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>编程教程。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
lang=ZH-CN face=宋体 size=2>2、目标和目的</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>在</FONT><FONT
face="Times New Roman">PC</FONT><FONT lang=ZH-CN face=宋体>图象世界中,</FONT><FONT
face="Times New Roman">IBM VGA</FONT><FONT lang=ZH-CN
face=宋体>已经成了事实上的标准。市场上现存的各种不同的</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN face=宋体>提供商都保证了与</FONT><FONT
face="Times New Roman">IBM VGA</FONT><FONT lang=ZH-CN face=宋体>在</FONT><FONT
face="Times New Roman">BIOS</FONT><FONT lang=ZH-CN
face=宋体>和寄存器上的兼容。越来越多的</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>兼容产品形成了</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN
face=宋体>的各种扩展。这些扩展有更高的分辨率、更多的色彩和一些图象处理能力。强烈的竞争提高了性价比,而受益的是最终用户。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>然而,对于那些意图利用超级</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>环境的新优点的软件开发人员却面临着一些严重的问题。由于没有标准的硬件,他们不得不面对各不相同的超级</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>硬件结构。缺乏通用的软件接口,导致设计相关的软件高昂的成本,而且在技术上也十分困难。除了</FONT><FONT
face="Times New Roman">OEM</FONT><FONT lang=ZH-CN face=宋体>提供的</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN face=宋体>之外,几乎没有什么</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>产品的强大功能能被软件所使用。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT face="Times New Roman">VESA VGA BIOS</FONT><FONT lang=ZH-CN
face=宋体>扩展的出台正是为了弥补这一缺陷。做为超级</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>图形产品的通用软件接口,其主要目的是使应用软件和系统软件适应和挖掘广大的</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>扩展中的丰富特性。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>明确而言,</FONT><FONT face="Times New Roman">VESA
BIOS</FONT><FONT lang=ZH-CN face=宋体>扩展要解决以下问题:</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
lang=ZH-CN face=宋体 size=2>1、向应用程序返回视频环境信息。</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
lang=ZH-CN face=宋体 size=2>2、帮助应用程序对硬件进行初始化和编程。</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
lang=ZH-CN face=宋体 size=2>2-1、视频环境信息</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>如今,仍没有标准的软件机制能确定它在何种超级</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN face=宋体>硬件上运行。只有通过</FONT><FONT
face="Times New Roman">OEM</FONT><FONT lang=ZH-CN
face=宋体>的产品特性才能知道该显卡的存在。这通常通过读取和测试每个</FONT><FONT
face="Times New Roman">OEM</FONT><FONT lang=ZH-CN face=宋体>厂商特有的</FONT><FONT
face="Times New Roman">I/O</FONT><FONT lang=ZH-CN
face=宋体>端口来完成。如果不知道所处的硬件,很少的(如果有的话)底层硬件特性能够被使用到。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT face="Times New Roman">VESA BIOS</FONT><FONT lang=ZH-CN
face=宋体>扩展提供了一些函数来返回视频环境的信息。这些函数返回诸如显示方式的详细资料等等的系统信息。函数</FONT><FONT
face="Times New Roman">00h</FONT><FONT lang=ZH-CN
face=宋体>返回普通系统级信息,包括一个</FONT><FONT face="Times New Roman">OEM</FONT><FONT
lang=ZH-CN face=宋体>识别串。函数同时返回所支持的显示方式的指针。函数</FONT><FONT
face="Times New Roman">01h</FONT><FONT lang=ZH-CN
face=宋体>能用来获取每一种支持的显示方式的详细信息。函数</FONT><FONT
face="Times New Roman">03h</FONT><FONT lang=ZH-CN
face=宋体>返回当前的显示方式。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
lang=ZH-CN face=宋体 size=2>2-2、编程支持</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>由于不同的超级</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>产品有不同的硬件结构,软件很难去适应每一种环境。但是,既然它们都是基于</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>硬件结构的,区别则主要在于显示方式的初始化和内存映射。结构的其余部分通常是不被接触的,包括</FONT><FONT
face="Times New Roman">I</FONT><FONT lang=ZH-CN face=宋体>/</FONT><FONT
face="Times New Roman">O</FONT><FONT lang=ZH-CN face=宋体>映射寄存器、</FONT><FONT
face="Times New Roman">CPU</FONT><FONT lang=ZH-CN
face=宋体>地址空间的视频缓冲定位和</FONT><FONT face="Times New Roman">DAC</FONT><FONT
lang=ZH-CN face=宋体>的位置及功能等。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT face="Times New Roman">VESA BIOS</FONT><FONT lang=ZH-CN
face=宋体>扩展提供了一些针对不同超级</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>硬件设备的接口函数。其中最重要的是函数</FONT><FONT
face="Times New Roman">02h</FONT><FONT lang=ZH-CN face=宋体>,设置超级</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>显示方式。该函数将应用程序从单调复杂的显示方式设置中解脱出来。函数</FONT><FONT
face="Times New Roman">05h</FONT><FONT lang=ZH-CN
face=宋体>提供了针对下层内存映射硬件的接口。函数</FONT><FONT face="Times New Roman">04h</FONT><FONT
lang=ZH-CN face=宋体>能使应用程序保存和恢复超级</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>状态而不必了解任何实现细节。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
lang=ZH-CN face=宋体 size=2>2-3、兼容性</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT face="Times New Roman">VESA BIOS</FONT><FONT lang=ZH-CN
face=宋体>扩展的一个主要设计目的是确保对于标准</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>环境的最大程度的兼容。而不可 能是</FONT><FONT
face="Times New Roman">BIOS</FONT><FONT lang=ZH-CN
face=宋体>妥协性能来完成兼容。另一点是对现有的</FONT><FONT face="Times New Roman">VGA
BIOS</FONT><FONT lang=ZH-CN face=宋体>做最小程度的修改。如同基于</FONT><FONT
face="Times New Roman">ROM</FONT><FONT lang=ZH-CN face=宋体>的设备一样,基于</FONT><FONT
face="Times New Roman">RAM</FONT><FONT lang=ZH-CN
face=宋体>的扩展将是可能的。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
lang=ZH-CN face=宋体 size=2>2-4、标准的情况</FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT face="Times New Roman">VESA BIOS</FONT><FONT lang=ZH-CN
face=宋体>扩展的目的是提供对扩展</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>环境的支持。因而下层的硬件设备被假定为</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>。图形软件应该向其驱动标准</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>一样来驱动超级</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>:如,直接写</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>帧缓存、操作图形控制寄存器和直接设计调色板等等。硬件无须做重要的图形处理。由于这个原因,</FONT><FONT
face="Times New Roman">VESA BIOS</FONT><FONT lang=ZH-CN
face=宋体>扩展不提供任何图形输出函数,如位块传送、画线和画圈等。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>对</FONT><FONT face="Times New Roman">VESA
BIOS</FONT><FONT lang=ZH-CN face=宋体>扩展的函数约束是由于现存</FONT><FONT
face="Times New Roman">BIOS</FONT><FONT lang=ZH-CN face=宋体>设备的</FONT><FONT
face="Times New Roman">ROM</FONT><FONT lang=ZH-CN
face=宋体>空间十分有限。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>在</FONT><FONT face="Times New Roman">VESA
BIOS</FONT><FONT lang=ZH-CN face=宋体>扩展之外,还有对不同显示器的操作和定时。这些东西在其它</FONT><FONT
face="Times New Roman">VESA</FONT><FONT lang=ZH-CN face=宋体>论坛中涉及。</FONT><FONT
face="Times New Roman">VESA BIOS</FONT><FONT lang=ZH-CN
face=宋体>扩展的目的是提供对超级</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>图形模式的标准软件接口,并不依赖显示器和显示器的定时问题。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>3、标准</FONT><FONT face="Times New Roman">VGA
BIOS</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
lang=ZH-CN face=宋体 size=3></FONT><FONT size=2><FONT face="Times New Roman">VESA
BIOS</FONT><FONT lang=ZH-CN face=宋体>扩展的设计目标是使之对标准</FONT><FONT
face="Times New Roman">VGA BIOS</FONT><FONT lang=ZH-CN
face=宋体>的影响最小。标准</FONT><FONT face="Times New Roman">VGA BIOS</FONT><FONT
lang=ZH-CN face=宋体>的函数应尽可能少的被修改。这是因为可能存在</FONT><FONT
face="Times New Roman">ROM</FONT><FONT lang=ZH-CN face=宋体>扩展。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>但是,有两个标准</FONT><FONT face="Times New Roman">VGA
BIOS</FONT><FONT lang=ZH-CN face=宋体>函数受到</FONT><FONT
face="Times New Roman">VESA</FONT><FONT lang=ZH-CN
face=宋体>扩展的影响。它们是函数</FONT><FONT face="Times New Roman">00h</FONT><FONT
lang=ZH-CN face=宋体>(设置显示方式)和函数</FONT><FONT
face="Times New Roman">0Fh</FONT><FONT lang=ZH-CN
face=宋体>(读取当前视频状态)。使用</FONT><FONT face="Times New Roman">VESA</FONT><FONT
lang=ZH-CN face=宋体>的程序不会通过</FONT><FONT face="Times New Roman">VGA
BIOS</FONT><FONT lang=ZH-CN face=宋体>函数</FONT><FONT
face="Times New Roman">00h</FONT><FONT lang=ZH-CN
face=宋体>来设置显示方式,同样也不会使用函数</FONT><FONT face="Times New Roman">0Fh</FONT><FONT
lang=ZH-CN face=宋体>。而是使用</FONT><FONT face="Times New Roman">VESA</FONT><FONT
lang=ZH-CN face=宋体>函数</FONT><FONT face="Times New Roman">02h</FONT><FONT
lang=ZH-CN face=宋体>(设置超级</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>模式)和</FONT><FONT face="Times New Roman">03h</FONT><FONT
lang=ZH-CN face=宋体>(获得超级</FONT><FONT face="Times New Roman">VGA</FONT><FONT
lang=ZH-CN face=宋体>模式)。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>为了使程序工作,</FONT><FONT
face="Times New Roman">VESA</FONT><FONT lang=ZH-CN face=宋体>推荐将</FONT><FONT
face="Times New Roman">VESA BIOS</FONT><FONT lang=ZH-CN
face=宋体>扩展的函数</FONT><FONT face="Times New Roman">0Fh</FONT><FONT lang=ZH-CN
face=宋体>的返回值(由</FONT><FONT face="Times New Roman">OEM</FONT><FONT lang=ZH-CN
face=宋体>决定)用</FONT><FONT face="Times New Roman">VGA BIOS</FONT><FONT lang=ZH-CN
face=宋体>函数</FONT><FONT face="Times New Roman">00h</FONT><FONT lang=ZH-CN
face=宋体>来重新初始化显示方式。这样,</FONT><FONT face="Times New Roman">BIOS</FONT><FONT
lang=ZH-CN face=宋体>将有效地记录下最近的超级</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN face=宋体>模式。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>推荐(但并非命令)在超级</FONT><FONT
face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>模式中支持输出函数(如</FONT><FONT face="Times New Roman">TTY-</FONT><FONT
lang=ZH-CN face=宋体>输出、卷屏、画点等等)。如果</FONT><FONT
face="Times New Roman">BIOS</FONT><FONT lang=ZH-CN
face=宋体>扩展不支持这些函数,模式属性域(由</FONT><FONT face="Times New Roman">VESA
BIOS</FONT><FONT lang=ZH-CN face=宋体>函数</FONT><FONT
face="Times New Roman">01h</FONT><FONT lang=ZH-CN face=宋体>返回)的</FONT><FONT
face="Times New Roman">D2</FONT><FONT lang=ZH-CN
face=宋体>位(输出函数支持)将被清除。</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT face="Times New Roman">4</FONT><FONT lang=ZH-CN
face=宋体>、超级</FONT><FONT face="Times New Roman">VGA</FONT><FONT lang=ZH-CN
face=宋体>模式号</FONT></FONT></P>
<P
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT
size=2><FONT lang=ZH-CN face=宋体>标准</FONT><FONT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -