随笔 - 14, 文章 - 2, 评论 - 1, 引用 - 0
数据加载中……

CR&SR

Tseng   Lab   ET-4000  
  General(一般)寄存器组:  
          Miscellaneous   Output   Reg         写:0x3c2     读:0x3cc  
          Input   Status   Reg   0                                           读:0x3c3  
          Input   Status   Reg   1                                           读:0x3da  
          Feature   Control   Reg                   写:0x3da     读:0x3ca  
          Video   Subsystem   enable             写:0x3c3     读:0x3d3  
  Sequencer寄存器组:                           索引--读写:0x3c4  
                                                                  数据--读写:0x3c5  
  CRTC寄存器组:                                     索引--读写:0x3d4  
                                                                  数据--读写:0x3d5  
  Graphics寄存器组:                             索引--读写:0x3ce  
                                                                  数据--读写:0x3cf  
  Attribute寄存器组:                           索引--读写:0x3ce  
                                                                  数据--读:     0x3c0  
                                                                  数据--写:     0x3c1
///////////////////////////////////////////////////////////////////////////////////////////////////
VGA/TVGA是目前国内计算机上广泛使用的视频图形显示卡,特别
是TVGA显示卡,除了具备一般VGA的显示模式外,还提供了增强的图形
和文本显示模式,增强的图形显示提供了高分辨率图形显示手段。VGA/T
VGA都具备灵活方便的可编程图形控制特性,为实现诸如图像的淡变(淡进
、淡出)、滚动、动画等特技处理提供了良好的工作环境。本文介绍在TVG
A 9000和TVGA 8900上图形方式下的滚动技术及其实现方法。
图形滚动技术
图形滚动(简称滚动)是指将显示的图形平滑地水平、垂直、斜向移动。
滚动是计算机图形处理中不可缺少的重要技术之一。利用TVGA 9000
和TVGA 8900提供的下列一组寄存器,可实现各个方向的滚动:
1.起始地址寄存器
在VGA中,起始地址寄存器(SAR)16位长,用于对64K长的缓
冲区中的任一字节编址。屏幕可看作是观察位于显示缓冲区中的数据的窗口,
而窗口的大小由当前显示方式的分辨率决定,其最大值就是该系统的最高显示
分辨率。实际上,最大窗口的尺寸往往小于数据区(显示缓冲区)的尺寸。因
此要观察显示缓冲区中任意部分,就需要移动这个窗口。技术上即通过设置起
始地址寄存器实现。
如果起始地址改变1,就会使屏幕上显示的数据向左(加1)或向右(减
1)移动一个字节。在256色图形方式,就意味着水平方向上移动8个象素
(因为每个字节8个象素,每个象素占一位)。
如果起始地址改变每一行的水平字节数,就会使显示向上(减)或向下(
加)移动一行。如每行有80个字节,那么加80就会向下移动一行。
由于CRTC寄存器都是8位的,所以16位长的起始地址寄存器占了两
个寄存器,称为高位起始地址寄存器(索引号为0CH)和低位起始地址寄存
器(索引0DH),其读/写端口为03B5H(单显),03D5H(彩显
),寄存器地址选择口为03B4H(单显),03D4H(彩显)。寄存器
格式为:
7 0 7 0
-------- --------
SAH SHL
-------- --------
高位起始地址 低位起始地址
索引号 0CH 索引号 0DH
地址选择 03D4H/ 地址选择 03D4H/
03B4H 03B4H
读/写口 03D5H/ 读/写口 03D5H/
03B5H 03B5H
在TVGA中,由于它可工作于128K页方式,所以起始地址为17位
长,0-15位的配置方法与VGA相同,位16被放在CRTC模块测试寄
存器3X5.1EH的位5,这个寄存器的格式及相关位如下:
7 6 5 4 3 2 1 0
- - - - - - - -

16
- - - - - - - -
CRTC模块测试寄存器
索引号 01EH
地址选择 03D4H/03B4H
读/写口 03D5H/03B5H
2.属性地址寄存器
属性地址寄存器用于选择属性控制寄存器(位0-4)及调色板地址源(
位5),在滚动操作中,位5应该为1,即允许显示存储区访问调色板RAM
,禁止主机访问调色板(位5为0,允许主机访问调色板,禁止显示存储区访
问调色板)。该寄存器格式及相关位为:
7 6 5 4 3 2 1 0
- - - - - - - -
源 属性寄存器索引
- - - - - - - -
属性地址寄存器
写端口 03C0H
读端口 03C1H
3.水平象素侧移寄存器
当起始地址寄存器内容变更1时,在256色方式下,就会水平移动8个
象素,使滚动出现跳跃,为获得平滑的水平滚动效果,水平滚动必须一个象素
一个象素的移动,利用水平象素侧移寄存器即可实现这一目的。该寄存器的格
式及相关位为:
7 6 5 4 3 2 1 0
- - - - - - - -
水平移动象素数
- - - - - - - -
水平象素侧移寄存器(PPR)
索引号 013H
地址选择 03C0H
写端口 03C0H
读端口 03C1H
图形滚动技术的程序实现
下面是在配备TVGA 8900显示卡的8086系列机及其兼容机上
用汇编语言实现的256色图形的水平和垂直流动的程序,这些程序可以由C
语言程序直接引用。
1.向右水平滚动程序
在该程序中,BYTES_PER_LINE是指定的256色方式下的
每行字节数,如800X600方式时每行字节数为800/8=100。
因为每行字节编址从0到BYTES_PER_LINE-1,所以初始化起
始地址值为BYTES_PER_LINE-1,调整值为-1。每字节为8
位,编址从0到7,所以水平象素侧移寄存器的初值应为7,调整值为-1。
该程序的入口参数为要滚动的象素个数,程序自动控制为0到BYTES_P
ER_LINE之间。没有返回值。

posted on 2009-05-25 16:23 Jeremy1111 阅读(396) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理