Int 10h ассемблер
Ассемблер
Прерывание 10h: службы ROM BIOS для видеодисплея
Все видеослужбы ROM BIOS запрашиваются с помощью прерывания 10h (в десятичной нотации 16). Имеется 25 основных служб, предоставляемых данным прерыванием. Подобно всем другим службам ROM BIOS видеослужбы нумеруются, начиная с 00h, и выбираются с помощью занесения номера службы в регистр AH. Обычно при работе с этими службами требуется задавать дополнительные параметры в регистрах AL, BX, CX или DX.
Служба 0: установить режим выдачи изображения
Служба 0 используется для выбора одного из четырнадцати режимов выдачи, показанных в таблице. Режимы с 0h по 6h применимы для стандартного цветного графического адаптера (CGA); режим 7h применяется для монохромного режима (MDA); режимы с 0Dh по 10h были добавлены для улучшенного графического адаптера (EGA); наконец, режимы 11h — 13h были внедрены на многоцветном графическом массиве (MCGA) (PS/2 моделей 25 и 30) и видеографическом массиве (VGA) (PS/2 моделей 50, 60 и 80).
Обычно при установке режима ROM BIOS чистит буфер памяти экрана, даже если снова и снова устанавливается один и тот же режим. Такая повторная установка того же самого режима может быть использована как простой и эффективный способ очистки экрана. В некоторых версиях DOS команда CLS фактически чистит экран с помощью данного способа. Установка видеорежима приводит также к установке принятых по умолчанию значений цветов цветовой палитры, поэтому при очистке экрана не используйте службу 0, если вы работаете с цветами, вместо этого применяйте видеослужбу 6.
При наличии адаптеров EGA,MCGA и VGA вы можете также дать указание ROM BIOS не очищать экран при установке видеорежима. Для этого к номеру режима, задаваемому вами в регистре AL, прибавьте число 80h (в десятичной нотации 128), что соответствует добавлению 1 в бит 7.
Значения регистров для службы установки видеорежима 0h
Номер службы Параметр
AH = 0 AL = номер режима
Таблица. Видеорежимы, устанавливаемые с помощью
видеослужбы ROM BIOS
Режим Тип Разрешающая Число Видеопод-
способность цветов системы
00h,01h Текстовый 40*25 16 CGA,EGA,
02h,03h Текстовый 80*25 16 CGA,EGA,
04h,05h Графический 320*200 4 CGA,EGA,
06h Графический 640*200 2 CGA,EGA,
07h Текстовый 80*25 Монохромный MDA,
08h,09h,0Ah Только для PCjr
0Bh,0Ch Внутренние режимы BIOS
0Dh Графический 320*200 16 EGA,VGA
0Eh Графический 640*200 16 EGA,VGA
0Fh Графический 640*350 Монохромный EGA,VGA
10h Графический 640*350 16 EGA,VGA
11h Графический 640*480 2 MCGA,VGA
12h Графический 640*480 16 VGA
13h Графический 320*200 256 MCGA,VGA
Например, следующий фрагмент очистит экран и установит видеорежим 3:
Служба 6: прокрутить окно вверх
Служба 06h (в десятичной нотации 6) и ее напарник служба 07h (в десятичной нотации 7) используются для задания на экране прямоугольной области текстового окна и прокручивания его содержимого вверх или вниз на одну или более строк. Для достижения эффекта прокрутки в нижнюю часть окна службой 06h вставляются пустые строки (служба 07h вставляет пустые строки в верхнюю часть окна); при этом верхние строки окна (нижние — в случае службы 07h) смещаются и исчезают с экрана.
Число строк, подлежащих прокрутке, задается в регистре AL. При AL = 00h окно очищается полностью (то же самое произойдет, если мы прокрутим больше строк, чем позволяет размер окна). Положение и размер окна задается в регистрах CX и DX: CH содержит верхнюю строку, а DH — нижнюю строку; CL — левую колонку, а DL — правую колонку. Атрибуты для новых пустых строк в обеих службах, задаются в регистр BH. Ниже суммируется порядок задания значений регистров для обеих служб (06h и 07h).
Значения регистров для служб прокрутки окон 06h и 07h
Номер службы Параметры
AH = 06h AL = число строк, подлежащих прокрутке
(прокрутка CH = номер строки для верхнего лев. угла
AH = 07h CL = номер колонки для верх. левого угла
(прокрутка DH = номер строки для нижнего прав. угла
DL = номер колонки для ниж. правого угла
BH = атрибут для выдачи пустых строк
Служба 7: прокрутить окно вниз
Служба 07h (в десятичной нотации 7), как мы уже упоминали, является зеркальным отображением службы 06h. Различие между этими двумя службами состоит в том, как происходит прокрутка. При выполнении службы 07h новые пустые строки появляются в верхней части окна, а старые строки исчезают со стороны его нижней части. (При выполнении службы 06h имеют место противоположные изменения.)
Служба 02h: установить положение курсора
Служба 02h (в десятичной нотации 2) устанавливает позицию курсора, используя координаты строки и колонки экрана. В текстовых режимах, где может быть несколько страниц изображения, каждая из них имеет независимо записываемую позицию курсора. Хотя в графических режимах и нет видимого курсора, в них логическое положение курсора поддерживается тем же способом, что и в текстовых режимах. Эта логическая позиция курсора используется для управления вводом/выводом символов по аналогии с текстовым режимом.
Для задания позиции курсора номер строки помещается в регистр DH, номер колонки в DL, а номер страницы в BH. Нумерация строк и колонок начинается с координат 0,0 в левом верхнем углу экрана. В графических режимах для идентификации положения курсора используются координаты строки и колонки пикселов вместо координат для знака. Номер страницы — это обычный номер страницы изображения, используемый в Бэйсике: страницы от 0 до 7 в 40-колонных режимах и от 0 до 3 в 80-колонных режимах. В графических режимах номер страницы должен быть установлен в 0.
Сведения о задании регистров даны ниже.
Значения регистров при установке положения курсора
Функции VGA BIOS
Графические режимы VGA за прошедшее с момента создания (1987 год) этого типа видеоконтроллеров время сильно устарели, а текстовые используются двадцать лет и продолжают успешно применяться (благодаря простоте выполнения операций в этих режимах). Поэтому в настоящее время интерес для программистов представляет только небольшая подгруппа функций из стандартного набора VGA BIOS, предназначенная для работы в текстовом режиме:
• управление положением и размером курсора;
Для вызова функций VGA BIOS используется прерывание Int 10h. Набор функций очень большой, но в целом — устаревший. Ниже рассматриваются только те функции, применение которых до сих пор является целесообразным. Более подробную информацию о функциях можно получить в книгах [3,10, 29,33, 40].
Прерывание Int 10h, функция OOh: установить видеорежим
Функция предназначена для установки заданного видеорежима. Коды VGA-режимов приведены в табл. 4.1. Все современные видеоконтроллеры поддерживают текстовый режим, а также сохраняют совместимость с устаревшими графическими режимами VGA на тот случай, если пользователю понадобится запустить какую-нибудь из старых программ.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АН — значение OOh;
• в AL — код видеорежима.
Таблица 4.1. Коды VGA-совместимых режимов
Знак «*» означает, что в данном режиме отключен механизм преобразования палитры.
Функцию установки текстового режима обычно нужно вызывать при входе в программу, работающую в этом режиме (поскольку, вообще говоря, неизвестно, в каком режиме работала DOS перед запуском программы). Функцию также вызывают перед возвратом в DOS из программы, использовавшей какой-либо графический режим — чтобы не было проблем с запуском последующих программ. Мы неоднократно пользовались данной функцией в примерах, приведенных в предыдущих главах.
Фрагмент программного кода, в котором выполняется установка текстового режима, выглядит следующим образом:
mov АН.О :код функция установки режима
mov AL,03h ;код режима
int 10h ;вызов прерывания
Прерывание Int 10h, функция 01 h: установить размер курсора
Функция предназначена для задания размера курсора в текстовом видеорежиме. Применяется она обычно в текстовых редакторах для уведомления пользователя о текущем режиме работы (вставка или замещение символов).
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в СН — номер начальной строки курсора в знакоместе;
• в CL — номер конечной строки курсора в знакоместе.
Номера начальной и конечной строк курсора задаются относительно верхней границы знакоместа. Для задания номеров начальной и конечной строк в регистрах CL и СН используются только разряды 0-4, в разряды 5-7 требуется записать нули.
Курсор можно сделать невидимым, если установить номер строки текущей позиции курсора за пределами нижней границы экрана (при помощи функции 02h). Это — самый надежный способ; существуют и другие приемы, но далеко не на всех видеоконтроллерах они дают нужный результат.
Прерывание Int 10h, функция 02h: установить позицию курсора
Функция позиционирует курсор на экране.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в ВН — номер текстовой видеостраницы;
• в DH — номер строки (Y);
• в DL — номер столбца (X).
За начало системы координат принят левый верхний угол экрана, причем ось X направлена слева направо, а ось Y — сверху вниз В стандартном текстовом режиме значение X можно задавать в пределах от 0 до 79, значение Y — от 0 до 24. Если задать значение Y = 25, то курсор становится невидимым (уходит за нижнюю границу видеостраницы).
Прерывание Int 10h, функция 03h: получить позицию и размер курсора
Функция определяет текущую позицию курсора на заданной видеостранице, а также размер курсора.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в ВИ — номер видеостраницы.
После выполнения функции в регистрах будут размещены следующие значения:
• в СИ — номер начальной строки курсора в знакоместе;
• в CL — номер конечной строки курсора в знакоместе;
• в DH — номер строки текущей позиции курсора;
• в DL — номер столбца текущей позиции курсора.
Прерывание Int 10h, функция 05h: установить видеостраницу
В текстовом режиме данная функция позволяет выбрать в качестве текущей (рабочей) одну из нескольких доступных видеостраниц. Перед вызовом прерывания требуется занести в регистры следующие значения:
• в AL — номер видеостраницы, которую требуется установить.
Прерывание Int 10h, функция 10h, подфункция OOh: установить один регистр палитры
Функция предназначена для 16-цветных режимов (текстовых и графических). Она позволяет переопределить цвет, соответствующий одному из кодов цвета.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код lOOOh;
• в BL — номер регистра палитры (0-15);
Прерывание Int 10h, функция 10h, подфункция 01 h: установить цвет рамки экрана
Функция позволяет изменить цвет рамки экрана (по умолчанию он черный).
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код lOOlh;
Прерывание Int 10h, функция 10h, подфункция 02h: установить все регистры палитры
Функция предназначена для 16-цветных режимов. Она позволяет переопределить значения 16 регистров палитры и регистра рамки экрана.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код 1002h;
• в ES: DX — указатель на массив из 17 байт (байты 0-15 содержат цвета палитры, байт 16 — цвет рамки).
Прерывание Int 10h, функция 10h, подфункция 03h: переключить бит атрибута «мерцание/яркость»
Функция переключает значение седьмого бита байта атрибутов символа: мерцание или яркий фон.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код 1003h;
• в BL — значение бита 7 в байте атрибутов (0 — яркий фон, 1 — мерцание символа).
Функция воздействует на режим отображения всех символов, а не на один конкретный символ. По умолчанию установка бита 7 в байте атрибутов символа вызывает его мерцание.
Ни мерцание, ни яркий фон не следует применять без особой необходимости — они утомляют оператора, сидящего за экраном монитора.
Прерывание Int 10h, функция 10h, подфункция 07h: прочитать один регистр палитры
Функция предназначена для 16-цветных режимов. Она позволяет прочитать значение цвета из заданного регистра палитры.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код 1007h;
• в BL — номер регистра палитры (0-15).
После выполнения функция возвращает значение цвета в ВН.
Прерывание Int 10h, функция 10h, подфункция 08h: прочитать один регистр палитры
Функция позволяет прочитать значение цвета рамки экрана из соответствующего регистра видеоконтроллера.
Перед вызовом прерывания требуется занести: в регистр АХ код lOOBh.
После выполнения функция возвращает значение цвета в регистре ВН.
Прерывание Int 10h, функция 10h, подфункция 09h: прочитать все регистры палитры
Функция предназначена для 16-цветных режимов. Она позволяет прочитать и сохранить в оперативной памяти значения 16 регистров палитры и регистра рамки экрана.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код 1009h;
• в ES:DX — указатель на массив из 17 байт для сохранения кодов цвета.
После выполнения функции байты 0-15 указанного массива содержат цвета палитры, байт 16 — цвет рамки.
Прерывание Int 10h, функция 10h, подфункция 10h: установить один регистр ЦАП
Функция предназначена для 256-цветных режимов. Она позволяет изменить оттенок, соответствующий одному из кодов цвета, путем перезаписи значений интенсивностей красного, зеленого и синего цветов в соответствующем регистре цифро-аналогового преобразователя.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код 1010h;
• в ВХ — номер регистра ЦАП (0-255);
• в DH — новое значение интенсивности красного цвета (0-63);
• в СН — новое значение интенсивности зеленого цвета (0-63);
• в CL — новое значение интенсивности синего цвета (0-63).
Прерывание Int 10h, функция 10h, подфункция 12h: перезагрузить группу регистров ЦАП
Функция предназначена для 256-цветных режимов. Она позволяет изменить набор оттенков, соответствующих группе цветовых кодов, путем перезаписи значений интенсивностей красного, зеленого и синего цветов в последовательно расположенных регистрах цифро- аналогового преобразователя.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код 1012h;
• в BX — номер начального регистра ЦАП (0-255);
• в СХ — число перезагружаемых регистров (1-256);
• в ES: DX — указатель на массив загружаемых оттенков из ЗхСХ байт.
Массив оттенков должен содержать число 3-байтных строк, равное значению, записанному в СХ. Первый байт в строке кодирует интенсивность красного, второй — зеленого, третий — синего цветов.
Прерывание Int 10h, функция 10h, подфункция 15h: прочитать один регистр ЦАП
Функция предназначена для 256-цветных режимов. Она позволяет прочитать содержимое заданного регистра цифро-аналогового преобразователя.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код 1015h;
• в BX — номер регистра ЦАП (0-255).
После завершения функции в регистрах будут размещены следующие значения:
• в DH — значение интенсивности красного цвета;
• в СН — значение интенсивности зеленого цвета;
• в CL — значение интенсивности синего цвета.
Прерывание Int 10h, функция 10h, подфункция 17h: прочитать группу регистров ЦАП
Функция предназначена для 256-цветных режимов. Она позволяет сохранить в оперативной памяти компьютера набор оттенков, соответствующих группе цветовых кодов.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код 1017h;
• в BX — номер начального регистра ЦАП (0-255);
• в СХ — число считываемых регистров (1-256);
• в ES-DX- указатель на область памяти для сохранения считанной информации (массив размером ЗхСХ байт).
После выполнения функции массив оттенков будет содержать 3-байт- ные строки: первый байт в строке кодирует интенсивность красного, второй — зеленого, третий — синего цветов.
Прерывание Int 10h, функция 11 h, подфункция OOh: загрузить шрифт пользователя для текстового видеорежима
Функция обеспечивает загрузку заданного пользователем шрифта в знакогенератор. Применяется в текстовом видеорежиме.
Обычно весь шрифт загружается целиком (СХ = 256, DX = 0), однако при необходимости возможна перезапись отдельного участка в наборе символов (в СХ записывается число заменяемых символов, в DX —номер первого символа в заменяемом участке). Память знакогенератора может содержать до восьми наборов шрифтов, однако обычно используется только блок с нулевым номером (BL = 0). В цветном текстовом режиме VGA используется шрифт 8×16, то есть ВН = 16. Символы представлены в растровой форме, каждой точке изображения соответствует один бит в маске символа, а каждой строке — один байт; символ кодируется 16 байтами, а полная таблица шрифта занимает 4 Кбайт.
Перед вызовом прерывания требуется занести в регистры следующие значения:
• в АХ – код llOOh;
• в ВН — число байтов в матрице символа;
• в BL — номер загружаемого блока знакогенератора;
• в СХ — число загружаемых символов;
• в DX — номер первого загружаемого символа в таблице кодов;
• в ES: BP — указатель на таблицу, содержащую маски символов загружаемого шрифта.
Источник: Кулаков В. К90 Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. — СПб.: Питер, 2003. — 847 е.: ил.
Электронная библиотека
Вывод символов и пикселов на экран мы выполняли с помощью записи данных в память. Такое выполнение зависит от установленного режима, поэтому полезно знать сервисные функции для вывода данных на экран. Вызов этих функций осуществляется командами
после записи параметров в регистры, где функция представляет собой число из диапазона от 0 до 1Ch.
Функция 0: установить видеорежим.
Вход: AL = номер видеорежима.
Данная функция устанавливает видеорежим с указанным номером, в соответствии с табл. 6.1.
CGA, EGA, MCGA, VGA
CGA, EGA, MCGA, VGA
CGA, EGA, MCGA, VGA
CGA, EGA, MCGA, VGA
При установке видеорежима, как правило, видеопамять очищается, поэтому очистку экрана можно выполнять с помощью повторной установки видеорежима. Эта функция приводит к установке принятых по умолчанию значений цветов. Если необходимо установить видеорежим, не очищая экран, то перед вызовом функции надо записать в AL сумму номера режима и числа 80h. ROM BIOS использует для программ обслуживания данные, записанные в память, начиная с адреса 400h. Эта область состоит
из двух блоков по 256 байт. В частности, номер видеорежима находится по адресу 449h. Текущий видеорежим можно определить функцией 0Fh.
Функция 1: установить размер курсора.
Вход: CH – начальная строка сканирования,
CL – конечная строка сканирования.
Курсор состоит из 16 сканируемых строк в стандартных текстовых режимах. Данная функция позволяет переустановить номера отображаемых строк. (По умолчанию для VGA значения CH = 13 и CL = 14.) Для номеров строк используются лишь младшие тетрады регистров CH и CL.
Функция 2: установить положение курсора.
Вход: BH – экранная страница,
DH – номер строки (координата y),
DL – номер строки (координата x).
Каждая страница экрана может иметь собственное положение курсора. Номер страницы, которая в данный момент выводится на экран, устанавливается с помощью функции 5 (прерывания 10h).
Функция 3: прочитать координаты положения курсора.
Вход: BH – экранная страница,
CH – начальная строка сканирования,
CL – конечная строка сканирования,
Сообщает размеры и координаты курсора на странице BH.
Функция 5: установить активную страницу экрана.
Вход: AL – номер новой экранной страницы.
Функция используется для выбора страницы, которая будет отображаться на экране. В текстовых режимах 0-3 номер страницы принимает значения от 0 до 7. В графических 16-цветных режимах номер страницы изменяется в пределах 0-1 или 0-3.
Функция 6: прокрутить окно вверх.
Вход: AL – число строк прокрутки,
CH – номер строки для верхнего левого угла,
CL – номер столбца для верхнего левого угла,
DH – номер строки для правого нижнего угла,
DL – номер столбца для правого нижнего угла,
BH – атрибут изображения для пустых строк.
Функция 7: прокрутить окно вниз.
Входные параметры те же, что и для функции 6.
Функция 8: прочитать знак и атрибут.
Вход: BH – номер активной страницы.
Выход: AL – код символа ASCII, прочитанного по месту расположения курсора,
AH – атрибут текстового знака.
Функция применяется для чтения знаков с экрана. Работает как в текстовом, так и в графическом режиме.
Функция 9: записать знак и атрибут.
Вход: AL – код символа ASCII, прочитанного по месту расположения курсора,
BL – значение атрибута (в текстовом режиме), цвет символа (в графическом режиме),
BH – номер страницы экрана (кроме режима 3),
CX – число экземпляров знака и атрибута, подлежащих записи.
Функция 0Ah: записать знак.
Вход: AL – код ASCII, записываемый на экран,
BL – цвет символа (для графических режимов),
BH – цвет фона (для видеорежима 13h) или номер страницы (для остальных режимов),
CX – число экземпляров знака и атрибута, подлежащих записи.
Эта функция в отличие от функции 9 не позволяет изменять текущий атрибут в текстовом режиме.
Функция 0Bh: установить 4-цветную палитру.
Вход: BH = 00h, BL – цвет фона, или
BH = 01h, BL – номер палитры (0 или 1).
В случае BH = 0 цвет фона может принимать значения от 00h до 0Fh. В случае BH = 1 можно выбрать одну из двух палитр, обеспечиваемых аппаратными средствами.
Функция 0Ch: записать пиксел.
Вход: AL – цвет пиксела,
BH – номер страницы экрана,
DX – координата y,
CX – координата x.
При установленном бите 7 в регистре AL пиксел будет иметь цвет, полученный в результате поразрядной операции XOR со старым цветом точки, имеющей координаты x = CX и y = DX.
Функция 0Dh: прочитать пиксел.
Вход: BH – номер страницы экрана,
DX – координата y,
CX – координата x.
Выход: AL – значение цвета пиксела.
Возвращает цвет точки, имеющей координаты (x, y). Действует в графических режимах.
Функция 0Eh: вывод символа в режиме телетайпа.
Вход: AL – код ASCII символа,
BL – цвет символа (в графическом режиме),
BH – страница экрана (для ранних IBM PC).
Выводит символ на экран как на печатающее устройство, при необходимости переходя на новую строку или делая скроллинг вверх.
Функция 0Fh: получить текущий видеорежим.
Выход: AL – номер текущего видеорежима,
AH – число знаков в строке (80 или 40),
BH – номер активной страницы.
Функция 10h: установка и чтение регистров палитры.
Вход: AL – подфункция
AL = 0 – установить один регистр палитры,
AL = 1 – установить цвет окантовки экрана,
AL = 2 – установить 16 регистров палитры и цвет окантовки,
AL = 3 – установить яркость фона или атрибут мерцания,
AL = 7 – прочитать значение регистра палитры,
AL = 8 – прочитать регистр цвета окантовки,
AL = 9 – прочитать значения 16 регистров палитры и регистра окантовки,
AL = 10h – изменить указанный регистр цвета DAC.
AL = 0. Номер регистра палитры (который в функциях вывода символов и точек задается как параметр цвета) при вызове этой подфункции следует записать в BL, а новое значение регистра палитры – в BH. Подфункция AL = 7 выполняет обратную операцию – при вызове подфункции AL = 7 номер регистра палитры следует записать в BL, а в BH будет возвращаться текущее значение этого регистра палитры. Значение регистра палитры, состоящего из смеси Red красных, Green зеленых и Blue синих цветов, где Red, Green и Blue – целые числа, принимающие значения от 0 до 3, вычисляются по формуле
Здесь a % b обозначает остаток от деления a на b, a / b – целая часть дроби , a * b – произведение. Если Red состоит из битов Rr, Green – из Gg, Blue – из Bb, то значение регистра BH будет равно 00rgbRGB.
AL = 1. Часть экрана, лежащая вне рабочей области, называется окантовкой (или окаймлением). Эта часть не обязательно должна быть черной. При вызове данной подфункции значение цвета окантовки задается в регистре BH. Подфункция 8 возвращает в BH значение цвета окантовки.
AL = 2. Изменение значений всех регистров палитры и регистра окантовки. Перед вызовом данной подфункции следует записать новые значения регистров в 17-байтную таблицу (массив), а адрес этой таблицы передается с помощью регистров ES и DX. Подфункция 9 выполняет обратное действие, записывая регистры палитры и окантовки в массив, адрес которого находится в регистрах ES и DX.
AL = 3. Значение, переданное в регистре BL, определяет, будет ли мерцание задано (BL = 1) или отменено (BL = 0). При отмене мерцания цвет фона изменяется в диапазоне от 0 до 15. (В этом случае старший бит байта атрибута обозначает интенсивность цвета фона.)
AL = 10. Осуществляет изменение регистра, принадлежащего набору, состоящему из 256 регистров цвета цифроаналогового преобразователя (DAC или ЦАП). В BX задается номер регистра цвета. Значения красного, зеленого и синего цветов задаются соответственно в регистрах DH, CH и CL. Для чтения одного из регистров цвета следует записать номер регистра цвета в BX и вызвать подфункцию 15h, которая возвратит значения RGB в DH, CH и CL.
Функция 11h: загрузить набор символов, используемых в текстовых или графических режимах.
Функция 12h: выбор альтернативной программы печати экрана.
Функция 13h: записать строку знаков.
В зависимости от AL использует заданные атрибуты для записи строки с адресом ES:BP на экран. Длина строки задана регистром CX, начальная позиция – регистром DX, страница – регистром BH. Если AL = 0, то атрибуты берутся из регистра BL. Если AL = 2 или AL = 3, то на экран переписываются из строки байты, помещая в видеоп
амять сначала знак, а затем его атрибут. Если AL = 2, то курсор остается в первоначальной позиции. Если AL = 3, то курсор перемещается в положение за последним знаком выведенной строки.
Функция 1Ah: прочитать / записать код комбинации дисплея.
Возвращает двухбайтовый код, указывающий, какая комбинация видеоподсистем и видеодисплеев присутствует на данном компьютере.
Функция 1Bh: получить информацию о функциональных возможностях видеоподсистемы и ее статусе.
Функция 1Ch: сохранить или восстановить статус видеоподсистемы.
Срочно?
Закажи у профессионала, через форму заявки
8 (800) 100-77-13 с 7.00 до 22.00