第10章图形与发声系统程序设计1_第1页
第10章图形与发声系统程序设计1_第2页
第10章图形与发声系统程序设计1_第3页
第10章图形与发声系统程序设计1_第4页
第10章图形与发声系统程序设计1_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、概述概述2 2、BIOSBIOS设置显示方式设置显示方式显示方式分为两类:文本方式和图形方式显示方式分为两类:文本方式和图形方式文本方式:主要用于字符文本处理。文本方式:主要用于字符文本处理。图形方式:又称为所有点可寻址方式。在图形方式下,可通过读图形方式:又称为所有点可寻址方式。在图形方式下,可通过读写屏幕上各个点的映像,显示出单色或者彩色图形。写屏幕上各个点的映像,显示出单色或者彩色图形。BIOSBIOS显示例程提供了设置各种文本和图形显示方式的功能。表显示例程提供了设置各种文本和图形显示方式的功能。表10.210.2列出了常用的显示方式。(列出了常用的显示方式。(P357P357)例例设

2、置文本方式设置文本方式MOVMOVAH,00HAH,00HMOVMOVAL,03HAL,03HINTINT10H10H设置设置VGAVGA图形方式:图形方式:MOVMOVAH,00HAH,00HMOVMOVAL,12HAL,12HINTINT21H21H10.210.2视频显示存储器视频显示存储器系统主板与显示器之间通过视频适配器板连接,它主要由视频控系统主板与显示器之间通过视频适配器板连接,它主要由视频控制器和视频显示制器和视频显示RAMRAM组成。显示器上要显示的信息都存放在视频组成。显示器上要显示的信息都存放在视频显示显示RAMRAM(VDRVDR)的存储器中,)的存储器中,VDRVDR

3、又称显示缓冲区。又称显示缓冲区。视频显示适配器的控制器会连续重复的读取视频视频显示适配器的控制器会连续重复的读取视频RAMRAM中的数据,中的数据,并把它转换在屏幕上的显示信号。屏幕上的画面一般要以并把它转换在屏幕上的显示信号。屏幕上的画面一般要以50705070次次/ /秒的速度更新。视频秒的速度更新。视频RAMRAM的一位或几位,可以表示屏幕上一的一位或几位,可以表示屏幕上一个像素的颜色和亮度,改变视频个像素的颜色和亮度,改变视频RAMRAM中的内容,屏幕上的显示画中的内容,屏幕上的显示画面也会立即跟着改变面也会立即跟着改变1 1、图形存储器映像、图形存储器映像在在EGAEGA和和VGAV

4、GA的图形方式下,像素的存取是采取一种位映像的方式的图形方式下,像素的存取是采取一种位映像的方式,对视频存储器的一个地址进行读写操作,将会从,对视频存储器的一个地址进行读写操作,将会从4 4个并行的位面个并行的位面存取存取4 4个字节的数据,这个字节的数据,这4 4个位面的存取由个位面的存取由CPUCPU根据相应的锁存器根据相应的锁存器的设置决定。的设置决定。(1 1)EGAEGA视频存储器视频存储器 对对EGAEGA视频视频RAM256KBRAM256KB可显示可显示6464种颜色,但是屏幕上同时显示的种颜色,但是屏幕上同时显示的颜色数只有颜色数只有1616种,种,EGAEGA图形存储器定位

5、在图形存储器定位在A0000HAFFFFHA0000HAFFFFH的一的一个独立的个独立的64KB64KB的地址空间中,的地址空间中,IBMPCIBMPC将视频将视频RAMRAM组织为组织为4 4个并行个并行的位平面,每个位平面的位平面,每个位平面64KB64KB,以页方式寻址来存取视频,以页方式寻址来存取视频RAMRAM的的全部全部64KB64KB。 图图10.210.2存储器位面结构中,位面上的每个字节表示显示屏幕上存储器位面结构中,位面上的每个字节表示显示屏幕上的的8 8个像素,每位代表个像素,每位代表4 4位颜色中的位颜色中的1 1位,位,4 4个位面上同一个地址个位面上同一个地址的的

6、4 4位可表示位可表示2 24 4=16=16种颜色。种颜色。 EGAEGA适配器中,设置了适配器中,设置了1616个调色板寄存器,每个寄存器个调色板寄存器,每个寄存器8 8位。位。图图10.1 EGA10.1 EGA和和VGAVGA的位面结构的位面结构EGAEGA只用了其中的只用了其中的6 6位,来表示位,来表示6464种颜色。种颜色。对对EGAEGA调色板编程可用调色板编程可用INT 10H AH=10HINT 10H AH=10H子功能子功能00H00HMOVMOVAH,10HAH,10HMOVMOVAL,00HAL,00HMOVMOVBH,colorBH,colorMovMovcl,p

7、alettecl,palette;调色板寄存器;调色板寄存器INTINT10H10HEGAEGA支持支持640X350640X350像素、像素、1616色显示方式,每个位面需要色显示方式,每个位面需要640640* *350/8=28000350/8=28000个字节对应个字节对应640640* *350=224000350=224000个像素进行个像素进行寻址。在位面的前寻址。在位面的前8080个字节中存放的是第一个个字节中存放的是第一个640640位的扫描行,位的扫描行,紧接着的紧接着的8080个字节存放的是第个字节存放的是第2 2个扫描行,像素的颜色由同一地个扫描行,像素的颜色由同一地址

8、而又分别位于址而又分别位于4 4个位面的个位面的4 4位来组合。位来组合。(2 2)VGAVGA视频存储器视频存储器 VGAVGA像素支持像素支持640X480640X480,可同时显示,可同时显示1616种颜色,最多可同时显种颜色,最多可同时显示示256256种颜色,每种颜色在调色板中用种颜色,每种颜色在调色板中用1818位表示,红、绿、蓝色位表示,红、绿、蓝色使用使用6 6位,能对位,能对2 21818=262144=262144种颜色进行选择种颜色进行选择 VGAVGA是一种模拟显示器,是一种模拟显示器,VGAVGA电路使用一种电路使用一种D/AD/A转换器产生模拟转换器产生模拟的的RG

9、BRGB信号,红、绿、蓝每种颜色对应一个信号,红、绿、蓝每种颜色对应一个6 6位的位的D/AD/A转换器,转换器,每种颜色允许每种颜色允许6464种组合,总共能产生种组合,总共能产生262144262144(218)种颜色。)种颜色。 VGAVGA视频适配器拥有视频适配器拥有256KB256KB的视频的视频RAMRAM,在,在640X480640X480分辨率,分辨率,1616色的图形方式下,与色的图形方式下,与EGAEGA一样,由一样,由4 4个个64KB64KB的位面组成,每个像的位面组成,每个像素由素由4 4位来表示,每个位面位来表示,每个位面1 1位。位。4 4个位面中的每个字节表示相

10、邻个位面中的每个字节表示相邻的的8 8个水平像素,利用个水平像素,利用4 4个位面可组合可以选择个位面可组合可以选择1616种颜色中的一种颜色中的一种。种。 VGAVGA的图形存储器定位于的图形存储器定位于0A0000H0AFFFFH0A0000H0AFFFFH处的处的64KB64KB,以分,以分区或分页的方式寻址。区或分页的方式寻址。VGAVGA的图形方式的图形方式13H13H是一种是一种320X200320X200的低分辨率显示方式,它的的低分辨率显示方式,它的颜色可达到颜色可达到256256种,因此一个像素种,因此一个像素8 8位来表示。在这种组织方式位来表示。在这种组织方式下,位面上的

11、一个字节表示一个像素,而不是下,位面上的一个字节表示一个像素,而不是8 8个像素。每页上个像素。每页上的的320X200=64000320X200=64000个像素,需要个像素,需要6400064000个字节来表示,用个字节来表示,用4 4个个位面来存储,每页实际需要位面来存储,每页实际需要1600016000个字节。表示像素个字节。表示像素0 0的字节位的字节位于位面于位面0 0像素像素1 1的字节位于位面的字节位于位面1 1,像素,像素2 2的字节位于位面的字节位于位面2 2像素像素3 3的字节位于位面的字节位于位面3 3,像素,像素4 4的字节紧跟在像素的字节紧跟在像素0 0后面,存于位

12、面后面,存于位面0 0,依次类推。如图,依次类推。如图10.210.2所示。所示。VGAVGA调色板中增加了调色板中增加了256256个颜色寄存器,在调色板寄存器中记录个颜色寄存器,在调色板寄存器中记录的不是像素的颜色码,而是访问颜色寄存器的顺序地址,实际的的不是像素的颜色码,而是访问颜色寄存器的顺序地址,实际的颜色来源于颜色寄存器。颜色来源于颜色寄存器。2 2、数据到颜色的转换、数据到颜色的转换EGA/VGAEGA/VGA中使用一种颜色编码技术,它包括在中使用一种颜色编码技术,它包括在EGAEGA上使用上使用2 2位的位的颜色代码,在颜色代码,在VGAVGA上使用上使用6 6位的颜色代码。位

13、的颜色代码。EGA/VGAEGA/VGA(除显示方式(除显示方式13H13H外)的每个调色板寄存器中,有外)的每个调色板寄存器中,有6 6位位数据作为输出到显示器的颜色码,其中低数据作为输出到显示器的颜色码,其中低3 3位(位(2020位)分别表位)分别表示高亮度的红、绿、蓝,高示高亮度的红、绿、蓝,高3 3位(位(5353位)表示红、绿、蓝三基位)表示红、绿、蓝三基色。每种颜色由色。每种颜色由2 2位表示,所以每种颜色可以有位表示,所以每种颜色可以有4 4种亮度。种亮度。EAGEAG调调色板中的颜色值通过色板中的颜色值通过6 6条控制线输出到显示器,每种颜色条控制线输出到显示器,每种颜色2

14、2条线条线,这使得显示器可显示多达,这使得显示器可显示多达6464种不同的颜色。种不同的颜色。图图10.2 数据到颜色的转换数据到颜色的转换VGAVGA要求一个模拟要求一个模拟RGBRGB显示器,通过显示器,通过D/AD/A转换器输出红、绿、蓝转换器输出红、绿、蓝模拟信号。在模拟信号。在VGAVGA提供的提供的13H13H显示方式下,每种颜色显示方式下,每种颜色6 6位,可显位,可显示示256K256K种颜色,每种颜色种颜色,每种颜色6464级亮度。级亮度。VGAVGA的调色板中除了的调色板中除了1616个调色板寄存器外,还有个调色板寄存器外,还有256256个颜色寄存个颜色寄存器,如图器,如

15、图10.310.3(b b)所示。图形存储器中的一个字节对应显示器)所示。图形存储器中的一个字节对应显示器屏幕上的一个像素,该字节的屏幕上的一个像素,该字节的0303位对调色板寄存器编址,位对调色板寄存器编址,4747 位提供访问颜色寄存器的低高位提供访问颜色寄存器的低高4位地址。调色板输出的低位地址。调色板输出的低4位用作位用作访问颜色寄存器的低访问颜色寄存器的低4位地址。位地址。在在16色方式下,色方式下,EGA将来自显存位面的将来自显存位面的4位像素值转换为位像素值转换为6位颜位颜色码,并输出到显示器,完成在色码,并输出到显示器,完成在64种颜色中显示其中种颜色中显示其中16种颜色种颜色

16、之一的过程。而在之一的过程。而在256色方案中,色方案中,VGA将将8位像素转换为选择位像素转换为选择256个颜色寄存器的个颜色寄存器的8位地址码,在将一个位地址码,在将一个18位的颜色码输出到显示位的颜色码输出到显示器,产生在器,产生在256K颜色中显示颜色中显示256种颜色的效果。种颜色的效果。图图10.3 数据到颜色的转换数据到颜色的转换3、直接视频显示在位面结构的显示方式下,地址映像操作都需要计算两个值:含有该像素位的字节地址,分离像素位所需要的掩码。(1)字节级映像操作这种方式适用于对屏幕上的一块区域进行控制。如在某一区域显示彩色阴影、开窗口、画线条或对称图形。例10.1根据以水平8

17、个像素为一行,的行列坐标,编写计算读写像素的字节地址的子程序COARSE_ADD。假定已设定的显示方式为VGA 12H方式(16色,640X480)在在256256色,色,320X200320X200方式下一个字节描述一个单独的屏方式下一个字节描述一个单独的屏幕像素,字节的幕像素,字节的8 8位值就是一个像素的属性值(位值就是一个像素的属性值(256256种种颜色之一)颜色之一)在图形方式下的显存直接定位于在图形方式下的显存直接定位于A0000HAF9FFA0000HAF9FF之间,之间,第一个字节第一个字节A000:0000A000:0000对应屏幕左上角的第一个像素,对应屏幕左上角的第一个

18、像素,最后一个字节最后一个字节A000A000:F9FFHF9FFH对应右下角的最后一个像对应右下角的最后一个像素。素。例例10.2 25610.2 256色、色、320X200320X200图形方式下画方框例程。图形方式下画方框例程。10.3 EGA/VGA图形程序设计在图形方式下,可以利用BIOS INT 10H功能或采用直接存储器映像的方法对屏幕上的像素进行读写和处理。1、读写像素EGA/VGA为图形方式时,BIOS有两个例程用于读写,即INT 10H的AH=0CH(写像素),AH=0DH(读像素)INT 10H,AH=0CH:写图形像素可以将一个点写到像素位置。调用参数AH=0CHAL

19、=像素颜色,取决于显示方式。BH=显示页号DX=像素行(0-199或0349)CX=像素列(0-399或639)返回参数:无BH=显示页号DX=像素行(0-199或0349)CX=像素列(0-399或639)返回参数:AL=颜色值置位复位寄存器 SR寄存器用来定义区域填充时向显示RAM写入的颜色。SR寄存器的D0D3位分别与4个位平面相对应。若D2=l,则向位平面2中写入的数据就全为1。若D1:0,则向位平面1中写入的数据就全为00。置位复位允许寄存器 通常与SR寄存器配合使用,启动对应于该寄存器D0D3位的位平面,用来决定置位复位操作在哪几个位子面进行。如果关闭某位平面,则不能修改被关闭平面

20、的颜色,也不能改变由功能0选取的颜色。通常将0FH输出到ESR寄存器后,便可对0,-3位平面进行操作。注意:功能0与功能1仅用于由功能5设定的模式0写操作。颜色无关寄存器:则用来控制哪些位平面参加比较,不参加比较的位平面无论其内容如何,总认为与参考颜色的相应位相等。此功能仅用于读模式为1数据循环/功能选择寄存器分为两个字段,数据循环字段(0-2位)决定在写操作之前,CPU数据向右循环的位数;功能选择字段(3-4位)决定写入显存的数据和CPU数据进行何种运算00:代换,01:AND,10:OR,11:XOR。读映像选择寄存器 在读模式0时用来选取位平面。当CPU对Video RAM进行读出操作时

21、,4个位平面的数据总是同时读出到暂存器中,由于一次只能向CPU送出一个字节,通过设置D0D1位的数值可选择哪一个位平面的读出数据字节被送到CPU中去。例如,01H时,送到CPU去的是从位平面1中读出的一个字节。模式选择寄存器在图形控制器中,无论按字节方式处理还是按像素方式处理,都要选择写入模式或读取模式。MODE寄存器的D0D1位值按以下方式确定:写入模式0:是EGA/VGA的默认模式,所写入的CPU数据可以更新任何一个或是全部的位面,同时,还可以与一个事先定义好的值进行逻辑运算,以更新锁存器中的8个像素或其中任一个像素。这种同时以字节方式和像素方式更新锁存器值的操作,要用到允许置位/重置寄存

22、器、数据循环/功能选择寄存器和位屏蔽寄存器。位屏蔽寄存器决定了新的像素值产生的方法。当位屏蔽寄存器的某位设为0时,相对应的像素值直接由锁存器写入显存;位屏蔽寄存器为1的位,所对应的像素值由锁存器中的像素值与CPU数据或置位/重置寄存器中相应位合并之后产生。数据循环/功能选择寄存器分为两个字段,数据循环字段(0-2位)决定在写操作之前,CPU数据向右循环的位数;功能选择字段(3-4位)决定写入显存的数据和CPU数据进行何种运算00:代换,01:AND,10:OR,11:XOR。写入模式1:把先前读入锁存器的数据直接复制到位面中。写入模式2:此模式像素的颜色只由CPU数据来确定,可将由CPU送来的

23、数据字节的D0D3位的数值按位分别写入03个位平面的所有8位中去。写入模式3:像素的值是由锁存器中的像素值和置位/重置寄存器的值合并后产生,而数据循环/功能选择寄存器也设置了合并时所要做的逻辑运算和移位操作,位屏蔽寄存器也是决定位面中的哪一个像素要被更新。EGA和VGA提供两种读模式读取模式共有两种,分别由MODE寄存器的第三位设置读模式(0,1两种状态)。读模式0:选择哪一个位面的字节读入CPU取决于读映像选择寄存器。读映像选择寄存器的0和1位,用来指定哪个位面的锁存器内容读到CPU。如果读取4个位面的内容,则必须对同一个地址执行读4次,再每次读之前,用指令分别设置读映像选择寄存器。读模式1

24、:CPU将8个像素值读入锁存器。这8个像素值会与颜色比较器进行比较,相符合者为1,反之置0,然后比较的结果送到CPU。如颜色比较器为0011,8个像素值为1011,1100,0011,0101,0010,0011,1101,1010则返回给CPU的结果为00100100,说两个像素符合。此模式适合测试某种颜色是否存在很有用。在比较过程中颜色无关寄存器决定哪个锁存器不参加比较。例10.5在图形方式12H下,测试屏幕上第一行中是否有红色像素,测试结果保存在test_buf中。2、图形方式下的文本显示INT 10H的功能9是BIOS提供的唯一能用图形方式的字符显示功能INT 10H功能2也能在图形方

25、式下设置字符显示位置。通过ASCII码扩展字符集中的图形符号来组成大号的显示字符,例如ASCII码为0DBH,0DCH,0DDH,0DEH,0DFH等方块字符来设计大号字母或文章中的方块标记。例:显示词GALLERY3、彩色绘图程序计算出指定像素的显存中的地址,包括字节偏移量和位偏移量,只要使用汇编指令MOV,MOVS,STOS等传输像素即可,也可以利用图形控制器提供的硬件支持,完成某些像素的运算和快速位面的更新。例:10.910.4通用发声程序计算机中的可编程时间间隔定时器8253/8254根据程序提供的计数值和工作模式,产生各种形状和各种频率的计数/定时脉冲,提供给系统的系统日历时钟,刷新

26、定时信号给动态存储器,对分时系统产生时间片等。它还可以产生不同频率的脉冲作为扬声器的声源。 1 1、可编程时间间隔定时器、可编程时间间隔定时器8253/82548253/8254定时器内部有定时器内部有3 3个独立的计数器,每个计数器都分配一个独立的计数器,每个计数器都分配一个端口地址分别为个端口地址分别为40H,41H,42H40H,41H,42H,内部还有一个公用的控制寄存,内部还有一个公用的控制寄存器,端口地址为器,端口地址为43H43H。每个计数器由三个引脚与外部联系分别是。每个计数器由三个引脚与外部联系分别是CLKCLK:时钟输入端:时钟输入端GATEGATE:门控信号输入端:门控信

27、号输入端OUT:OUT:为计数为计数/ /定时信号输出端。定时信号输出端。每个计数器是一个每个计数器是一个1616位减位减1 1计数器,控制字如下:计数器,控制字如下:图图10.8 8253/825410.8 8253/8254控制字格式控制字格式例:将计数器0设置为模式3,计数值为4282(BCD)MOVAL,00110111BOUT43H,ALMOVAX,4282HOUT40H,ALMOVAL,AHOUT40H,AL将计数器2设定为模式3,计数初值为65536MOVAL,10110110BMOV43H,ALSUBAL,ALOUT42H,ALOUT42H,ALIBM-PC中,8253/54的

28、三个时钟端CLK0,CLK1,CLK2的输入频率都是1.1931817MHz,计数器0和计数器1的门控GATE0和GATE1接+5V,计数器2的GATE2与8255的端口PB0相连。计数器0作为定时器为系统提供时间基准,计数器0的输出端OUT与中断控制器8259A的中断请求端IRQ0相连,为IRQ0提供每秒18.2次的中断信号,18.2Hz= 1.1931817MHz/216,计数器0的工作模式为模式3所以控制字为00110110B=36HIB-MPC BIOS初始化程序如下MOVAL,36HOUT43H,ALMOV AL,0OUT40H,ALOUT40H,AL计数器1作为定时器使用,其输出脉冲用作DRAM刷新的定时信号。在IBM PC中,刷新DRAM的任务由8237DMA来完成DRAM要求15us刷新一次,OUT1输出脉冲的频率是66.2KHz。初值=1.1931817MHz/66.2KHz=18。在作模式2下,OUT1连续输出周期为15us的定时信号,这个定时信号就作为DRAM的刷新信号。;set counter1,lsb only,mode2,binaryMOV AL,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论