一,顯示輸出。
顯示器通過顯示適配卡與系統連接,顯示適配卡是顯示器與微機系統的接口。
由于在微機系統中處理的是二進制模擬量,這些信號量不能直接用以控制屏幕顯示。這時,就需要通過一個接口,經過轉換模擬量,運算放大…再用以控制屏幕顯示。
所謂接口,通俗的理解是一個起緩沖與協調作用的電路模塊。緩沖對應運算速度的差異,協調則用以消除不同量之間的轉換問題。
早期的顯示適配卡是CGA和EGA。目前較高級的顯示適配卡是VGA與TVGA。它們都支持兩種顯示方式:文字和圖形顯示方式。而每種顯示方式又含有不同的顯示模式。
目前我只了解一些在匯編環境下的文字顯示方式,圖形顯示方式太復雜,而且,文字顯示方式也是“美國電子計算機協會”的標準,對于中文的顯示,暫不論。
文本顯示方式是指以字符(string)為單位的顯示方式。字符包括:A~Z,a~z,0~9。還有一些普通符號:?%¥#…等。以及一些特殊符號,如菱形塊和矩興塊。
文本顯示方式采用0~3號顯示模式,每種顯示模式每屏可顯示的字符數以及可使用的顏色數目不同。常用的是3號顯示模式,此模式之下,顯示器屏幕被劃分為80列25行。容易算出,3號顯示模式下,每屏可顯示:25X80=2000個字符。
匯編程序的寫屏,就是通過行,列為坐標確定屏幕上的位置的。在3號模式中,左上角,左下角,右上角,右下角的坐標為:(0,0),(24,0),(0,79),(24,79).
在屏幕上顯示一個字符,需要兩個字節。八位二進制數為一字節(1byte),那么,我們在屏幕上看到的一個字符,實際上是由十六個二進制數0或1構成的。而在匯編語言中,數據的默認位數為:十六位。屏幕顯示字符的規則是:一字節為字符代碼,一字節為字符屬性。由兩字節組成一個十六進制數控制屏顯字符。A~Z,a~z,0~9…以及鍵盤上的控制字符,運算符號的字符代碼和掃描碼可在百度鍵入“ASCLL碼與掃描碼表”查詢。
字符屬性是指字符顯示時的特性。在單色顯示時,屬性定義了閃爍,反相和高亮等顯示特性;在彩色顯示則多定義了前景色和背景色。一字節的字符屬性是這樣定義的:D7,D6,D5,D4,D3,D2,D1,D0=BL,R,G,B,I,R,G,B。
其中D7~D0為八位二進制數0或1。
R,G,B為三色:red,grass,blue.(紅,綠,藍)。
BL表示閃爍。當BL位,即D7,為0時表示前景字符不閃爍。為1時表示前景字符閃爍。
I表示亮度:當I ,即D3,為0時,表示前景字符為一般強度;為1時,表示前景字符為高亮度。亮度和閃爍只用于前景。
簡言之:位D4~D6組合8種背景色;D0~D3組合16種前景色,BL與I定義前景的閃爍和強度。
例如我要在(0,0)坐標顯示一字符,它的字符屬性為:背景色黑色,前景色藍色。那么,字符屬性字節就是:00000001。具體的意義是:00000001=BL,R,G,B,I,R,G,B。二進制數00000001換為十六進制數是:01H。
同理,黑底紅字:00000100=04H。白底紅閃爍字:11110100=0F4H。
就筆者了解,在編程中,無論何種顏色都是通過對“三原色”(紅,綠,藍)的設置調出來的。JAVA.C…等編程語言的調色規則可在百度查詢。
…