Графический видеоконтроллер VGA
Адаптер VGА (Vidео Gгарhiсs Аггау) представляет собой дальнейшее развитие ЕGА. В основном он полностью совместим с адаптером ЕGА, поэтому мы приведем только его основные отличия. 1. Если ЕGА – дисплеи имеют цифровой вход, то VGА – это дисплей с аналоговым входом. Поэтому при формировании цвета пикселя из битовых плоскостей цвет слагается из трех основных цветов (красного, зеленого и синего), интенсивность каждого из которых может плавно варьироваться от нуля до максимального значения. 2. VGА имеет большее разрешение, чем ЕGА, и предоставляет пользователю три дополнительных режима: 640 х 480 – 2 цвета, 640x480 – 16 цветов, 320 х 200 – 256 цветов. В режимах 640 х 480 имеется одна графическая страница размером 153600 байт. В режиме 320 х 200 с 256 цветами используется несколько иной метод формирования цвета пикселя, чем в других режимах; за счет этого видеопамять разбивается на 4 страницы размером по 16К. Этот режим возможен только на аналоговых дисплеях или дисплеях с переменной частотой. 3. Частота генератора пикселей VGА принимает значения 25 или 28 Мгц (в отличие от 14 и 16 Мгц у ЕGА). 4. VGА имеет дополнительный порт ввода ЗССh, позволяющий считать содержимое многоцелевого регистра (см. описание порта ЗС2h в п. 7.6). Графические позиции ЗСАh и ЗССh, имеющиеся в ЕGА, у VGА отсутствуют. Задания Исходный текст программы Video.asm, используемой для выполнения лабораторной работы: Stck Segment Stack db 512 dup(?) Stck EndS Data Segment mem_adr dw 0A000h color db? msk db? Data EndS Code Segment Public 'Code' Assume CS: Code, DS: Data START PROC FAR Mov AX, Data Mov DS, AX Mov AX, 12h Int 10h Mov AX, Mem_Adr Mov ES, AX Mov DX, 3CEh Mov AL, 5 out DX, AL Inc DX Mov AL, 0 out DX, AL mov bx, 8d push bx mov bx, 0 n1: Mov msk, 10000000b Mov color, 4d CALL FILLRECT add bx, 1 cmp bx, 8d jne n1 pop bx add bx, 8d Mov msk, 01000000b Mov color, 12d CALL FILLRECT Mov msk, 00100000b Mov color, 14d CALL FILLRECT Mov msk, 00010000b Mov color, 2d CALL FILLRECT Mov msk, 00001000b Mov color, 09d CALL FILLRECT Mov msk, 00000100b Mov color, 1d CALL FILLRECT Mov msk, 00000010b Mov color, 6d CALL FILLRECT Mov msk, 00000001b Mov color, 0d CALL FILLRECT Mov AH, 0 Int 16h MovAX, 0003h Int 10h MovAH, 4Ch Int 21h START EndP FILLRECT PROC push ax push dx MovDX, 3CEh MovAL, 8 outDX, AL IncDX MovAL, msk outDX, AL MovAL, ES: [BX] MovAL, 0 MovES: [BX], AL MovDX, 3C4h MovAL, 2 outDX, AL IncDX MovAL, color outDX, AL MovAL, 0FFh MovES: [BX], AL pop dx pop ax ret FILLRECT EndP Code EndS EndSTART Задание 1 Вывести одну цветовую строку в верхней части экрана. Задание 2 Вывести разноцветную строку в верхней части экрана. Задание 3 Вывести цветовую полосу шириной 3 см в средней части экрана. Задание 4 Вывести шахматную полосу в нижней части экрана.
|