- 相關(guān)推薦
VGA顯示屏開關(guān)技巧
摘 要 該本分析了如何通過對端口03c8h、03cqh進行操作來改變VGA顯示顏色,進而達到屏幕開關(guān)顯示的藝術(shù)效果。
屏幕開關(guān)顯示的方法有很多種,如:利用分頁功能,前后臺處理;還可利用某些端口的位操作關(guān)閉電子束。這些方法共同的缺點是:單調(diào),缺乏靈活性。這里向大家介紹一種方法,可彌補以上缺憾。
彩色顯示器16種顏色都是紅、綠、藍3基色調(diào)和的結(jié)果,各顏色的3基色在VGA卡上分別占用一個18位的顏色寄存器,紅、綠、藍各占6位。系統(tǒng)開機時,各顏色3基色的值被設(shè)置成缺省值,改變3基色的比例,就可達到改變顏色顯示效果的目的。
黑色的3基色均為0,如將所有顏色的基色值都置成0,則可達到關(guān)屏的效果,反之,恢復(fù)各顏色的基色缺省值,則可達到開屏的目的。由此推廣,如將各顏色的基色值逐步減為零,則可使屏幕逐步變暗;如將綠、藍兩基色值先逐步減為零,再將紅色減滅,則屏幕顏色先逐步轉(zhuǎn)紅,之后變暗……
16種顏色的3基色的缺省值為:
色號:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
R 0 0 0 0 42 42 42 42 21 21 0 0 63 63 63 63
G 0 0 42 42 0 0 21 42 21 21 63 63 21 21 63 63
B 0 42 0 42 0 42 0 42 21 63 0 63 21 63 0 63
3基色的傳送方法為:
out 03c8h, ptr
out 03c9h, r
out 03c9h, g
out 03c9h, b
其中:
ptr=n ; n=0,1,2,3,4,5,7
n 14 ; n=6
n 48 ; n=8,9,10,11,12,13,14,15
n為顏色號,ptr為相應(yīng)的顏色寄存器號。
r, g, b分別為紅、綠、藍3基色值。
上述過程全在COMPAQ DESKPRO 386/33M上調(diào)試通過。
以下給出一個關(guān)屏實例,由TASM編譯,TLINK連接生成.COM文件。本程序稍作修改即可作為過程用于其它應(yīng)用程序上。
.model small
.code
.386
org 100h
start:
mov bp,cs:red-ptr
mov bl,[bp]
cmp bl,0;基色r為零嗎?
je @@1;是,則跳
dec bl;否則,減1
mov [bp],bl
@@1: mov bl,[bp 1]
cmp bl,0;基色g為零嗎?
je @@2;是,則跳
dec bl;否則,減1
mov [bp 1],bl
@@2: mov bl,[bp 2]
cmp bl,0 ;基色b為零嗎?
je @@3 ;是,則跳
dec b1 ;否則,減1
mov [bp 2],bl
@@3: mov al,cs:c-num ;色號→al
call change ;改變al號顏色
call delay ;延時
cmp cs:c-num,15 ;色號小于15嗎?
jl @@4;是,則跳
cmp cs:loop1,0 ;否則,色號,基色值指針復(fù)位
je @@5
mov cs:c-num,1
mov cs:red-ptr,offset red
dec cs:loop1 ;
jmp start
@@4: inc cs:c-num ;色號加1
add cs:red-ptr,3 ;基色值指針加3
jmp start
@@5: int 20h
delay:
mov cx,8760
@@6: dec cx
cmp cx,0
jnz @@6
ret
change:
cmp al,6
je @@7
cmp al,7
jle @@8
add al,48
jmp @@8
@@7: add al,14
@@8: mov dx,03c8h
out dx,al
mov dx,03c9h
mov bp,cs:red-ptr
mov al,[bp]
out dx,al
mov al,[bp 1]
out dx,al
mov al,[bp 2]
out dx,al
[1] [2]
【VGA顯示屏開關(guān)技巧】相關(guān)文章:
開關(guān)04-30
什么是顯示屏04-26
人生的開關(guān)作文04-30
關(guān)于開關(guān)的作文08-30
人生的開關(guān)作文03-26
愛心開關(guān)作文04-28
什么是顯示屏尺寸04-26
什么是顯示屏類型04-26
什么是顯示屏尺寸04-26
什么是顯示屏顏色04-26