視頻顯示卡一個(gè)直接寫屏的例子
在文本DMA將從段B000H開始的4KB內(nèi)存當(dāng)顯存,許多既具有文本模式又具有圖形模式的適配器(CGA、EGA、MCGA、VGA)都使用B800H開始的16KB內(nèi)存當(dāng)作顯存。在顯存里,每一個(gè)字符顯示位置都分配了2個(gè)字節(jié)。第一個(gè)字節(jié)(偶地址)包含有字符的ASCII碼,通過一個(gè)字符發(fā)生器將其譯碼成屏幕上的點(diǎn)陣模式。第二個(gè)字節(jié)(奇地址)是屬性字節(jié)。該字節(jié)的幾個(gè)域控制了閃爍、高亮度和反顯特性。
其字符屬性格式為:
目前幾乎所有PC機(jī)視頻系統(tǒng)都是以6845視頻控制器芯片為基礎(chǔ)的。6845芯片有18個(gè)控制寄存器,其編號(hào)為0~17。前10個(gè)為確定水平及垂直方向的顯示參數(shù)。程序設(shè)計(jì)人員不關(guān)注。
10、11及14、15號(hào)寄存器分別存放光標(biāo)的形狀及位置。12、13號(hào)寄存器處理分頁;16、17號(hào)寄存器報(bào)告光筆位置。
由于程序員所用的寄存器都是成對(duì)的,因此需要先寫地址寄存器,再寫一個(gè)寄存器,接著再寫地址寄存器,然后寫第二個(gè)寄存器。由于端口號(hào)是相鄰的在使用INC和DEC指令尋址最方便。
例9-1 寫入6845芯片的11、12號(hào)寄存器(數(shù)據(jù)在BX中)