《彩色图形屏幕处.ppt》由会员分享,可在线阅读,更多相关《彩色图形屏幕处.ppt(27页珍藏版)》请在三一办公上搜索。
1、第16章 彩色/图形屏幕处理,16.1 文本模式 16.2 图形模式 16.3 设定图形模式及显示色彩,16.1 文 本 模 式,文本模式可以在屏幕上处理字母、数字和一些图形字符。对应屏幕上的每个字符位置有两个存储器字节,一个是被显示字符的ASCII码字节,一个是属性字节。,图16-1 彩色属性字节,在彩色文本模式下,彩色显示卡不提供加下划线的功能。彩色显示卡与单色显示卡相同,都能接受256个扩充的ASCII码字符集。属性字节对单色显示和彩色显示都是有效的,属性字节如图16-1所示,可以用来选择前景(显示的字符)和背景的颜色。每个字符可以选择16种颜色中的一种,这16种颜色由二进制的组合决定。
2、RGB这些字母分别各占用一个二进制位,各自代表彩色显示器的红、绿、蓝三色。BL(位7)表示闪烁,I(位3)表示亮度,闪烁和亮度只能用于前景。表16-1为彩色文本模式下16种颜色的组合。,彩色文本模式属性提供了前景和背景颜色的选择,每个被显示字符可以选择表16-1所示的16种颜色中的一种。屏幕的背景颜色选择表16-1中I为0的8种颜色之一。若前景和背景选择的颜色一样,显示出的字符就是看不见的。当选择其中的一种颜色并进行设定后,它将保持不变,直到另一种设定改变它。,表16-1 16种颜色的组合,显示屏幕的背景颜色只能是表16-1中I为0的8种颜色之一。位7可以使字符闪烁(BL=1)。表16-2是彩
3、色文本模式下属性字节的典型组合。这些属性都适用于文本的单色及彩色显示。例如,在屏幕上以红底蓝字显示5个“*”。,MOV AH,09;INT 10H要求显示 MOV AL,*;被显示的字符送AL MOV BH,0;0页 MOV BL,41H;选择红底蓝字 MOV CX,05;重复次数 INT 10H;BIOS中断调用,表16-2 彩色属性字节的典型组合,位,16.2 图 形 模 式,图形模式是以像素产生色彩的。彩色/图形显示卡有高、中、低三种分辨率,中等分辨率是彩色/图形的正常模式。中等分辨率彩色/图形模式,把屏幕分成320列、200行(320200=64000)个像素。每一个字节可表示4个像素
4、,编号为03。例如:,字节:C1 C0 C1 C0 C1 C0 C1 C0 像素:0 1 2 3依顺序为0像素3像素。,表示一个像素的两位有4种组合:00,01,10,11,分别表示4种不同的颜色。用00可以选为与背景相同的颜色,背景色可以是16种可用颜色中的一种。其余的三个像素,就必须从两个三色调色板中挑选出其中一个调色板来使用,如表16-3所示。在任何时刻,像素的颜色都只有四种颜色可供选择使用。这是因为表示每个像素的是两个二进制位,只有4种组合:00,01,10,11。,表16-3 调色板与像素,利用INT 10H可以选择调色板及背景颜色。如果你选用黄色(作为背景色)和调色板0,则屏幕上各
5、像素的颜色可为黄、绿、红及棕色。如果某一个字节内所包含的4个像素的值是10101010,那么4个像素全都显示红色。如果选用蓝色(作为背景色)和调色板1,则有效的4种颜色为蓝、青、紫和白色。如果某一个字节内所包含的4个像素的值是00011011,则会显示出蓝、青、紫和白色。,对于图形,首先利用INT 10H(AH=00)来设置图形模式。接着利用INT 10H可以进行像素的读、写、选择调色板及背景颜色等操作。其功能号分别为0BH、0CH、0DH,在INT 10H之前应将功能号送入AH,各功能如下:(1)AH=00:设置模式。AH的值为00,AL的值为04,可以用来设定中等分辨率彩色图形模式:MOV
6、 AH,00;设定模式为 MOV AL,04;320200分辨率 INT 10H,(2)AH=0BH:设置彩色调色板。入口参数:AH=0BH,BH=00或BH=01。BH=00,根据BL的值来选择背景色。BL的值取自16种颜色中的一种(015,或0F)。BH=01,根据BL的值来选择调色板,可以是调色板0或者是调色板1。下面是一个例子:,MOV AH,0BH;设定彩色MOV BH,01;选择调色板0MOV BL,00;绿、红、棕INT 10H;BIOS中断调用,(3)AH=0CH:写像素。入口参数:AH=0CH。该功能可以显示所选用的彩色(背景和调色板)。假设屏幕设置为中分辨率(320200)
7、,行号值将被写入DX中(0199),列号将被写入CX中(0319)。而AL则为像素的彩色值(03)。例如:,MOV AH,0CH;要求写出一点 MOV AL,像素的颜色 MOV CX,列号 MOV DX,行号 INT 10H;BIOS中断调用,(4)AH=0DH:读像素。此操作返回的是像素色彩的值,将其存放在AL中。入口参数:AH=0DH,DX=行号,CX=列号。返回参数:AL=像素值。,16.3 设定图形模式及显示色彩,例16.1 设置彩色/图形模式并显示屏幕的1/4彩条。选择蓝色(作为背景色)和调色板0,然后每行显示一种颜色,每4行重复一次,直到屏幕的1/4显示出彩条。,程序从0行0列开始
8、画彩线,DX、CX寄存器用来保留行号和列号,在画每一条彩线时,DX(行号)保持不变,CX(列号)从0增加到200(屏幕列的1/2)。画下一条彩线时,DX加1,CX从0变化到200,而且每画一条水平彩线,BL中的像素值增1。第一条彩线是蓝色(背景色00),第二条彩线是绿色(01),第三条是红色(02),第四条是棕色(03),以后重复显示这四种颜色。不难想象,若要求画垂直线时,应先保持列号(CX)不变,而行号(DX)从0开始每次增加一个像素值,直到最后一个像素199。此程序使用了写像素点的功能0CH,这使得编写绘图程序变得简单了。,此程序将使显示停留在图形模式。想要恢复原来的文本模式可使用下列两种
9、方法:(1)利用DOS MODE 命令(MODE CO80);(2)利用你自己设计的COM文件,采用INT 10H 设定为文本模式即可。程序清单如下:,CODESG SEGMENT PARA CODE ASSUME CS:CODESGSTART:MOV AH,00;设置图形方式 MOV AL,04H;320200 CGA=4 INT 10H MOV AH,0BH;设置背景色 MOV BH,00;取背景,MOV BL,01;蓝色 INT 10H MOV AH,0BH;设置调色板 MOV BH,01;选择调色板0 MOV BL,00 INT 10H MOV BX,00H;设置初始颜色 MOV CX,00;列 MOV DX,00;行,A50:MOV AH,0CH;写像素点 MOV AL,BL;设置颜色 INT 10H INC CX;列号加1 CMP CX,160;列号是否为160?JNE A50;不是,则循环 MOV CX,00;是,则重新设置列号 INC BL;变换颜色,AND BL,03 INC DX;行号加1 CMP DX,100;行号是否为100?JNE A50;不是,则循环 MOV AH,4CH INT 21H CODESG ENDS END START,