Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Программирование EGA и VGA

Вызов функции 0Eh: Вывод символа на активную страницу в режиме телетайпа.

Комментарии

Функция применяется для эмуляции телетайпа: после записи символа курсор перемещается в следующую позицию. В отличие от других функций, осуществляющих запись символов, рассматриваемая функция интерпретирует символы "Звонок", "Возврат каретки" и "Перевод строки" как команды, а не как символы IBM-набора.

Функция позволяет выполнять запись только на активную страницу.

Исходные данные

Регистры (устанавливаются до вызова функции):

  • AH: устанавливается eh
  • AL: ASCII-код символа
  • BL: цвет символа (используется только в графическом режиме)

Приведенная ниже программа выполняет печать полной строки (сообщения). Следует обратить внимание на действие управляющих кодов 7, 10 и 13. Сравните результат действия функций 9, ah и 13h.

Пример на языке ассемблера:

        data    segment public
                msg     db 'This line demonstrates printing'
                        db 'ASCII 7 (',7,'), 10(',10,') and'
                        db '13(',13,').'
                m_len   equ $-msg ;формирование константы от текущей
                                  ;метки до начала сообщения
                                  ;(длина сообщения)
        data    ends
        code    segment public
                assume  CS:code
        main    proc    far
        start:  push    DS
                sub     AX,AX
                push    AX
                mov     AX,data
                mov     DS,AX
                assume  DS:data
                mov     DH,05    ;строка 5 (для вызова функции 2)
                mov     DL,0     ;столбец 0 (для вызова функции 2)
                mov     CX,m_len ;число итераций
                mov     BP,offset msg ;указатель на сообщение
                mov     BL,1     ;начальный цвет 1
                inc     DX       ;следующий столбец
                mov     AH,2     ;функция 2 - установка курсора
                int     10h      ;вызов видео-BIOS
                  ;Установка курсора осуществляется вне цикла. Сравни-
                  ;те этот пример с примером для функции 9.
        lp1:    mov     BH,0     ;страница 0
                mov     AL,msg[BP] ;получение ASCII-кода
                mov     AH,0eh   ;функция 0eh
                int     10h      ;вызов видео-BIOS
                inc     BP       ;указатель на следующий символ
                inc     BX       ;следующий цвет
                cmp     BL,15    ;если не 15,
                jbe     skp      ;пропустить до skp
                mov     BL,1     ;если 15, установить цвет 1
                  ;В текстовом режиме цвет не поддерживается. Для вос-
                  ;становления цвета необходимо использовать программу
                  ;установки режима (функция 0) и перейти в графичес-
                  ;кий режим.
       skp:    loop    lp1
                mov     DH,21    ;строка 21
                mov     DL,0     ;столбец 0
                mov     AH,2     ;функция 2 - установка курсора
                int     10h      ;вызов видео-BIOS
                ret
        main    endp
        code    ends
        end     start

Вызов функции 0Fh: Определение текущего видеорежима.

Комментарии

Функция возвращает информацию о текущем режиме.

Исходные данные

Регистры (устанавливаются до вызова функции):

  • AH: устанавливается 0Fh

Выходные данные

Регистры (читаются после вызова функции):

  • AL: номер текущего режима (см. функцию 0)
  • AH: число выводимых символьных столбцов
  • BH: число активных страниц (см. функцию 5)

Пример, приведенный для функции dh (Считывание точки), использует обращение к рассматриваемой функции.

Данная функция была последней функцией из основного набора BIOS. Различия в вызовах этих функций между EGA/VGA и MDA/CGA адаптерами минимальны и объясняются расширением диапазона числа страниц или элементов изображения. Все остальные функции являются особенностью новых адаптеров (модели PC jr и PS/2 Model 30 также поддерживают некоторые из новых функций, однако в настоящем руководстве они не рассматриваются).


4. Дополнительные возможности

BIOS EGA/VGA

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

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

Вызов функции 10h: Установка регистров палитры.

Комментарии

Обращение к функции позволяет изменить любой (или все) из цветов на другой цвет и установить цвет рамки.

В 16-цветном режиме число регистров палитры равно количеству используемых цветов. В совместимых режимах регистры 1 - 3 отвечают за формирование цветов палитры 1, а регистры 4 - 6 - за формирование цветов палитры 0. При работе с ECD в графическом режиме 10h с 64К памяти EGA используется схема, приведенная ниже.

Регистр палитрыНомера цветов
 0 0, 2, 8, 10
 1 1, 3, 9, 11
 4 4, 6, 12, 14
 7 5, 7, 13, 15

При переустановке режима в регистры палитры заносятся принятые по умолчанию значения. Если функция применяется с целью установки палитры, обращение к ней должно выполняться после каждой переустановки режима. Принятые по умолчанию значения можно изменять путем формирования новой таблицы параметров и замены таблицы BIOS SAVE_PTR (подробно этот метод описан в главе 12). Переустановка принятых по умолчанию палитр для VGA возможна за счет использования функции альтернативного выбора (обращение к функции 12h, BL=31h).

Кроме стандартных регистров палитры VGA снабжен цифро-аналоговым преобразователем (ЦАП), с помощью которого также может быть осуществлено управление цветом. ЦАП использует 6 битов для определения яркости каждого цвета (красного, зеленого и синего), в результате чего значение цвета представляется 18-битовым кодом (262144 цветовых оттенка). ЦАП имеет 256 регистров, и каждый из регистров может содержать различное значение цвета. Таким образом, в режиме 13h может использоваться 256 цветов из 262144 возможных.

В 16-цветных режимах VGA регистры палитры занимают 16 регистров из 64-регистрового подмножества ЦАП (возможно переключение между четырьмя подмножествами). В другом варианте использования регистры палитры могут занимать 16 регистров из 16-регистрового подмножества ЦАП (при этом имеется возможность использования 16 подмножеств). По умолчанию после установки режима (за исключением режима 13h) устанавливаются значения 16/64/4; инициализируется и используется при этом только подмножество 0.

Исходные данные

Регистры (устанавливаются до вызова функции):

  • AH: устанавливается 10h

Подфункция 0: Установка отдельного регистра палитры.

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

Регистры (устанавливаются до вызова функции):

  • AL: установить 0
  • BL: регистр для установки (номер цвета)
  • BH: значение регистра (цвет - см. таблицу ниже)

Подфункция 1: Установка регистра цвета рамки.

Подфункция устанавливает цвет рамки. Правильная работа подфункции обеспечивается только в 200-строчном режиме EGA, так как в 350-строчном режиме покрывается не полностью из-за недостаточной скорости развертки.

Регистры (устанавливаются до вызова функции):

  • AL: установить 1
  • BH: значение регистра (цвет)

Подфункция 2: Установка всех регистров палитры.

Подфункция требует помещения в память 17-байтовой таблицы. Первые 16 байтов содержат значения для регистров палитры 0 - 15, а 17-й байт - значение для регистра края развертки.

Регистры (устанавливаются до вызова функции):

  • AL: установить 2
  • ES: сегмент, содержащий таблицу
  • DX: смещение первого байта в таблице

Подфункция 3: Переключение бита яркости/мерцания

Регистры (устанавливаются до вызова функции):

  • AL: установить 3
  • BH: 0 - яркий без мерцания;1 - мерцание без яркого

Форматы регистров цвета для EGA и CGA:


      7 6 5 4 3 2 1 0
     +-+-+-+-+-+-+-+-+
     ¦x x x¦I¦x¦R¦G¦B¦
     +-+-+-+-+-+-+-+-+
            |   --+--
            |     +--- код цвета (R-красный, G-зеленый, B-синий)
            +--------- интенсивность (яркость) цвета

Форматы регистров цвета для ECD:

           7 6 5 4 3 2 1 0
     +-+-+-+-+-+-+-+-+
     ¦x x¦r¦g¦b¦R¦G¦B¦
     +-+-+-+-+-+-+-+-+
          --+-- --+--
            ¦     +--- младшие разряды кода цвета
            +--------- старшие разряды кода цвета

По умолчанию устанавливаются цвета со следующими кодами:

Наименование цветаECDEGA/CGA
Черныйxx000000xxx0x000
Синийxx000001xxx0x001
Зеленыйxx000010xxx0x010
Голубойxx000011xxx0x011
Красныйxx000100xxx0x100
Фиолетовыйxx000101xxx0x101
Коричневыйxx010110xxx0x110
Светло-серыйxx000111xxx0x111
Темно-серыйxx111000xxx1x000
Ярко-синийxx111001xxx1x001
Ярко-зеленыйxx111010xxx1x010
Ярко-голубойxx111011xxx1x011
Ярко-красныйxx111100xxx1x100
Сиреневыйxx111101xxx1x101
Желтыйxx111110xxx1x110
Белыйxx111111xxx1x111

Приведенные ниже подфункции поддерживаются только VGA.

[ Назад ] [ Оглавление ] [ Далее ]

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
Аноним
Мне нравитсяМне не нравится
25 февраля 2005, 20:18:18
Подфункция 3: Переключение бита яркости/мерцания
Регистры (устанавливаются до вызова функции):

AL: установить 3
BH: 0 - яркий без мерцания;1 - мерцание без яркого

---------------------
на самом деле регистр bl, а не bh
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог