⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vesa编程介绍3.htm

📁 VESA编程介绍
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0077)http://shaker.myrice.com/document/vesa-program-introduce/vesa-introduce-3.htm -->
<HTML><HEAD><TITLE>VESA编程介绍3</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1276" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY><FONT size=3>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%">===========================================================================================</P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
size=4>VESA <FONT lang=ZH-CN face=宋体>编程介绍&nbsp;&nbsp;&nbsp;&nbsp; 
(</FONT></FONT><FONT face=宋体><FONT lang=ZH-CN>3):</FONT>扩展的VGA 
BIOS</FONT></P><B>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%">---------------------------------------------------------------------------------</P></B></FONT>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
size=2>相关章节:&nbsp;&nbsp;&nbsp; &nbsp;<A 
href="http://shaker.myrice.com/document/vesa-program-introduce/vesa-introduce-1.htm">(1): 
标准VGA BIOS及超级VGA模式号</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A 
href="http://shaker.myrice.com/document/vesa-program-introduce/vesa-introduce-2.htm">(2):CPU<FONT 
lang=ZH-CN>显存控制</FONT></A><FONT lang=ZH-CN>&nbsp;&nbsp;&nbsp; &nbsp; 
</FONT><FONT lang=ZH-CN>(3)</FONT>:<FONT lang=ZH-CN>扩展的VGA BIOS</FONT></FONT> 
<FONT lang=ZH-CN size=2>&nbsp;</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
lang=ZH-CN 
size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<A 
href="http://shaker.myrice.com/document/vesa-program-introduce/vesa-introduce-4.htm">(4): 
扩展的VGA BIOS(续)及应用举例</A></FONT> </P><FONT size=3><B>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%">---------------------------------------------------------------------------------</P></B></FONT>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>6、扩展的VGA BIOS</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>一些新的BIOS调用已经支持超级VGA模式。为了最大程度地与标准VGA 
BIOS兼容,这些BIOS调用同属于一个函数号。这个数字在AH寄存器中通过10h中断被传送。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>指定的超级VGA扩展函数号是4Fh。该函数号在如今的VGA 
BIOS中并未被使用。因而函数调用4Fh时对标准VGA并无影响。超级VGA标准VS900602定义了子函数00h到07h,函数号08h到0FFh保留。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>6-1、状态信息</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>每一个函数向AX寄存器返回一个状态信息。状态字的格式如下:</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>AL==4Fh 函数被支持</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>AL!=4Fh 函数不被支持</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>AH==00h 函数调用成功</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>AH==01h 函数调用失败</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>当AH寄存器的值为非零时,软件就应该认为是失败。在今后的VESA BIOS扩展中将会定义新的错误号。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>6-2、00h-返回超级VGA信息</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 
size=2>该函数的目的是向调用程序提供超级VGA环境的情况。该函数填满一个由调用者所指定地址的信息块。信息块的大小有256字节。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>输入:AH = 4Fh 超级VGA支持</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>AL = 00h 返回超级VGA信息</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>ES:DI = 缓冲区指针</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>输出:AX = 状态</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>(其它寄存器保持不变)</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>信息块的结构如下:</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>VgaInfoBlock STRUC</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>VESASignature db 'VESA' ; 四字节的标志</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>VESAVersion dw ? ; VESA版本号</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>OEMStringPtr dd ? ; OEM串的指针</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>Capabilities db 4 dup(?) ; 视频环境的情况</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>VideoModePtr dd ? ; 所支持的超级VGA模式的指针</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>TotalMemory dw ? ; 板载64K内存块数</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>Reserved db 236 dup(?) ; VgaInfoBlock的剩余</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>VgaInfoBlock ENDS</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>只有当VESASignature区域为“VESA”时,该信息块才有效。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>VESAVersion域是二进制表示的,指明了超级VGA 
BIOS所遵从的VESA标准的级别。低字节表明了副版本号。当前的VESA版本号是1.2。使用VESA BIOS扩展的特性的程序在今后的版本中仍将有效。VESA 
BIOS扩展将是完全向上兼容的。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 
size=2>OEMStringPtr是一个指向以空作为结束的OEM定义串的长指针。该串用来为针对硬件的设备驱动鉴定显示芯片、显示板和内存配置等等。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>Capabilities区域描述了视频环境所支持的一般特性。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>各位定义如下:</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>D0 = DAC可变换</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>0 = DAC为固定宽度,每种主要颜色6位</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>1 = DAC宽度可变换</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>D1-31保留</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><B></B><FONT 
face=宋体 
size=2>VideoModePtr指向了一个包括了所有所支持的超级VGA(VESA定义的和OEM指定的)显示模式。每种模式占用一个字(16位)。模式号表由-1(0FFFFh)结束。请回到第二章查阅VESA模式号详细资料。指针可被指向RAM或ROM,依具体情况而定。可能该表是在ROM中的静态串,也可能是在运行时生成于RAM中的信息块。程序负责检验由返回模式信息(函数01h)所返回的当前模式是否可用。由于显存和显示器的关系,当前的显示模式可能是不可用的。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>TotalMemory指明了板载内存量。其值表示了板上现有的64K内存块的块数。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>6-3、01h-返回超级VGA模式信息</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 
size=2>该函数返回一个指定的超级VGA显示模式的相关信息。该函数根据调用者给定的地址填充一个模式信息块。模式信息块最大为256K。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 
size=2>此函数返回的一些信息是由VESA模式号暗中定义的。但是一些超级VGA可能支持其它的显示模式而不是由VESA所定义的。为了提供对该模式的访问,函数也返回一些各种各样的相关信息。</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>输入:AH = 4Fh 超级VGA支持</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>AL = 01h 返回超级VGA模式信息</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>CX = 超级VGA模式号(模式号必须为函数00h返回值之一)</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>ES:DI = 256字节缓冲区指针</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>输出:AX = 状态</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>(其它寄存器不变)</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>模式信息块结构如下:</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>ModeInfoBlock STRUC</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>; 强制信息</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 
face=宋体 size=2>ModeAttributes dw ? ; 模式属性</FONT></P>
<P 
style="MARGIN: 0px; WORD-SPACING: 0px; TEXT-INDENT: 0px; LINE-HEIGHT: 100%"><FONT 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -