Вывод в цветном графическом режиме



Программа, приведенная ниже, использует команду INT 10h для установки графического режима, выбора зеленого фона и вывода на экран точек (40 строк по 320 столбцов). В программе происходит увеличение значения цвета на 1 для каждой строки. Так как в определении цвета участвуют только три правых бита, цвета повторяются через каждые семь строк.

    MOV AH,00      ;Устан. режима графики

    MOV AL,0Dh      для EGA (CGA=04)

    INT 10h

    MOV AH,0Bh     ;Установить палитру

    MOV BH,00      ;Фон

    MOV BL,02      ;Зеленый

    INT 10h

    MOV BX,00      ;Начальные цвет,

    MOV CX,00      ;столбец

    MOV DX,00      ;и строка

A50: MOV AH,0Ch     ;Функция вывода точки

    MOV AL,BL      ;Установить цвет

    INT 10h        ;BХ, СХ  и DХ сохраняются

    INC CX         ;Увеличить столбец

    CMP CX,320     ;Столбец 320?

    JNE A50        ;Нет - цикл,

    MOV CX,00      ;Да - сбросить

    INC BL         ;Изменить цвет

    INC DX         ;Увеличить строку

    CMP DX,40      ;Строка 40?

    JNE A50        ;Нет - цикл,

    RET             ;Да - завершить

 

После выполнения программы дисплей остается в графическом режиме. Восстановление текстового режима возможно либо с помощью команды DOS MODE (МОDЕ С080), либо пользовательской СОМ-программой, в которой для этой цели используется команда INT 10h.

Порядок выполнения работы

С помощью ассемблера выполнить программу, приведенную в пункте 2.3. На основе этой программы составить и выполнить процедуру, которая устанавливает графический режим экрана со средней разрешающей способностью с установкой цветов и выводит в его центре геометрическую фигуру в виде окрашенного квадрата.

Требования к отчету

Отчет по лабораторной работе должен содержать:

а) титульный лист;

б) условие задания;

в) текст программ на языке Ассемблера;

г) ответы на контрольные вопросы.

Контрольные вопросы

1. Объясните разницу в количестве цветов, возможных при низ-ком, среднем и высоком разрешении.

2. Напишите команды для установки графического режима с разрешающей способностью: 

а) 320х200 в адаптере CGA и б) 640х200 в адаптере EGA.

3. Напишите команды для установки синего фона в графическом режиме.

4. Напишите команды для чтения точки на 12-й строке и 13-м столбце в графическом режиме.

5. Модифицируйте приведенную программу для:

а) графического режима на вашем мониторе;

б) красного фона; в) строк с 10-й по 30-ю;

г) столбцов с 20-го по 300-й.


ЛАБОРАТОРНАЯ РАБОТА № 4

ПРОГРАММИРОВАНИЕ СИСТЕМНЫХ ФУНКЦИЙ BIOS И DOS ДЛЯ РАБОТЫ С КЛАВИАТУРОЙ

 

Цель работы

Целью настоящей работы является изучение возможностей базовой системы ввода-вывода и дисковой операционной системы для программирования ввода информации с клавиатуры.

Теоретическая часть

Системные функции BIOS для работы с клавиатурой

Базовая система ввода-вывода (BIOS) имеет три функции для работы с клавиатурой. Они являются частью клавиатурного драйвера и выполняются с помощью прерывания 16h. Номер конкретной функции задается в регистре AН. Результат выполнения функции получается в регистрах AL и AH.

Чтение очередного символа

Функция AH=00h помещает в регистр AL очередной ASCII-код символа, введенного с клавиатуры, а в регистр AH заносит скэнкод этого символа. Если буфер клавиатуры пуст, то компьютер ожидает нажатия клавиши. Если клавиша или комбинация клавиш генерирует расширенный код, то в регистр AL помещается 0, а в регистр AH расширенный код. Введенный символ на экране не отображается.

MOV AH,00h

INT 16h

Справка о наличии символа

Функция AH=01h сбрасывает флаг нуля в 0 (ZF=0), если в буфере клавиатуры есть символ для чтения, и устанавливает флаг в 1, если буфер пуст. Этот символ и его скэн-код будут помещены в регистры AL и AH соответственно. Символ остается в буфере.

  MOV AH,01h

  INT 16h

Определение текущего состояния клавиатуры

Функция 02h помещает в регистр AL содержимое первого из двух байтов состояния клавиатуры с абсолютными адресами 417h и 418h. Если нужно узнать содержимое второго байта, его необходимо прочитать из памяти.

Содержимое первого байта (417h):

Бит клавиша значение, когда бит = 1

7 Ins        ; режим вставки включен

6 CapsLock   ; фиксация верхнего регистра

5   NumLock      ; фиксация цифровой клавиатуры

4 ScrollLock  ; прокрутка экрана включена

3 Alt        ; клавиша нажата

2 Ctrl        ; клавиша нажата

1 Shift        ; клавиша нажата

Содержимое второго байта (418h):

7 Ins       ; клавиша нажата

6 CapsLock    ; клавиша нажата

5 NumLock     ; клавиша нажата

4 ScrollLock   ; клавиша нажата

3 Ctrl-NumLock ; режим паузы

Остальные биты не используются.

    MOV AH,02h

    INT 16h

Системные функции, осуществляемые прерыванием 16h, принадлежат к числу тех, которые позволяют создавать программы, не зависящие от операционной системы.

Тем не менее целесообразней пользоваться более гибкими возможностями системных функций для работы с клавиатурой, вызываемых с помощью прерывания 21h.


Дата добавления: 2018-04-04; просмотров: 866; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!