Любая программа в процессе работы взаимодействует с периферийными устройствами персонального компьютера (ПК), в частности, с дисплее - pismo.netnado.ru o_O
Главная
Поиск по ключевым словам:
страница 1
Похожие работы
Любая программа в процессе работы взаимодействует с периферийными устройствами персонального - страница №1/1


Системное программное обеспечение, часть 2 (курс 3, семестр 2)
Видеосистема персонального компьютера фирмы IBM

Введение


Любая программа в процессе работы взаимодействует с периферийными устройствами персонального компьютера (ПК), в частности, с дисплеем [1]. Этот процесс осуществляется на трёх уровнях, влияющих на производительность и совместимость программы:

  • На уровне операционной системы программа обращается к периферийному устройству через системные функции; большинство их в MS-DOS сосредоточено в прерывании 21h. Этот способ обеспечивает максимальную мобильность программы, но платой за это является минимальная производительность. Кроме того, функции операционной системы не поддерживают графические режимы;

  • Программа может взаимодействовать с периферийными устройствами с помощью базовой системы ввода/вывода (BIOS), являющейся, по существу, встроенным аппаратно-программным средством. Управление дисплеем сосредоточено в прерывании INT 10h, процедуры которого образуют драйвер дисплея. Этот способ характеризуется хорошей мобильностью и приемлемой для большинства прикладных программ производительностью, что и объясняет его широкое применение;

  • Наконец, в ПК фирмы IBM программисту предоставлена возможность прямого управления периферийным устройством через порты ввода/вывода. Производительность программы при этом достигает максимума, но мобильность несколько ухудшается.

Во второй части курса "Системное программное обеспечение" студенты изучают основы работы с системой прерываний ПК на примере прерывания 10h BIOS. Функции этого прерывания предоставляют широкие возможности по организации обмена данными с дисплеем и достаточно просты в использовании и универсальны. При написании контрольной работы, выполнении практических работ, а также разработке собственных программ и функций студенты могут использовать как язык Ассемблер, изучавшийся ими в предыдущей части курса, так и язык Си (I и II курсы), имеющий доступ к регистрам и позволяющий организовать работу с системой прерываний.

1.Эволюция видеосистем

1.1.Адаптер MDA


Первый персональный компьютер фирмы IBM, появившийся в 1981 году, был рассчитан на обработку исключительно текстовой информации. Поэтому основное требование к адаптеру заключалось в получении высококачественных текстовых изображений в черно-белом варианте (MDA – Monochrome Display Adapter). Этот адаптер формирует на экране 25 строк текста по 80 символов в каждой. Матрица элемента [2] состоит из 9 пикселов по горизонтали и 14 по вертикали (разрешающая способность 720350 пикселов). Кроме того, с его помощью создаются эффекты инверсного изображения (inversion), повышенной яркости (intensity), подчёркивания (underline) и мигания (blinking).

1.2.Адаптер CGA


Появившийся в 1982 году, он обладает возможностью формировать графические изображения и текст в цвете (16 цветов для текстового режима и 4 для графического). При этом, однако, в жертву была принесена разрешающая способность: в адаптере CGA (Color Graphics Adapter) символьная матрица состоит из 8 пикселов по горизонтали и 8 по вертикали или 640200 точек в графическом режиме. Одновременно с этим адаптером была предпринята попытка внедрения светового пера, но это устройство не приобрело широкой популярности и впоследствие было заменено мышью.

1.3.Адаптер EGA


1984 год. Довольно сложная видеосистема. Символьная матрица – 814; разрешающая способность – 640350. Как в тексте, так и в графике этот адаптер позволял видеть 16 цветов из 64 возможных (EGA – Enhanced Graphics Adapter).

1.4.Адаптер VGA


Год появления – 1987. Матрица символа для текстового режима – 916. Максимальное разрешение – 720400. Адаптер допускал работу с 256 цветами в графическом режиме из 256К возможных. Название VGA расшифровывается как Video Graphics Array.

1.5.Адаптер sVGA


Почти сразу после появления стандарта VGA большинство разработчиков предприняли усилия по его улучшению. В результате нововведения зачастую не совпадали между собой, поскольку каждый считал нужным делать это по-своему. Всякая разработка, тем не менее, поддерживала VGA, а все дополнительные режимы и возможности были объединены под общим понятием sVGA (super VGA). Для систематизации усилий разработчиков в этом направлении ассоциация VESA предложила свой стандарт на новые видеоадаптеры, среди характеристик которого, в частности, стандартный режим с разрешением 800  600 точек с 256 цветами, не менее 512 К видеопамяти

1.6.Адаптер Hercules


Параллельно с адаптерами фирмы IBM появляются аналогичные устройства других фирм, наиболее известным из которых является изделие компании Hercules. Первым из этого ряда был адаптер, появившийся в 1982 году и допускавший качественное изображение текстовой информации и возможность работы в графическом режиме (матрица 914 для текста и разрешение 720350 для графики). В дальнейшем появлялись и цветные устройства (16 цветный Hercules InColor Card 1987 года).

2.Состав видеосистемы ПК


Одной из наиболее важных составных частей любого персонального компьютера является его видеосистема. Под этим понятием обычно подразумевают монитор (дисплей), видеоадаптер и набор соответствующих программ-драйверов, поставляемых в комплекте с видеоадаптером или в составе прикладных пакетов.

2.1.Дисплей


Самая заметная, самая крупная и самая дорогая (около 1/3 стоимости всего ПК) часть видеосистемы – дисплей (display) или монитор (monitor). Он характеризуется несколькими свойствами:

  • Цвет. Практически все выпускаемые сейчас мониторы имеют возможность выводить цветное изображение. Количество одновременно отображаемых цветов зависит от другого компонента видеосистемы – видеоадаптера;

  • Размер. Длина диагонали, измеряемая в дюймах: 14, 15, 17, 19, 21. Больший размер монитора позволяет получать при прочих равных условиях большее и лучшее изображение, что положительно сказывается на зрении пользователя. Фактическим стандартом стали мониторы с диагональю в 15 дюймов;

  • Зерно. Всякое изображение на мониторе строится из множества минимально возможных точек (в ранних моделях адаптеров (CGA, EGA) такая точка была различима визуально). Размер каждой из них – одна из основных характеристик монитора. Стандарт в этом – 0.28 мм. Лучшие модели имеют точку 0.27, 0.25 и даже 0.21 мм;

  • Максимальное разрешение. Фактически этот параметр зависит от размера монитора, размера точки и характеристик видеоадаптера (в частности, объёма памяти). Фактическим стандартом стало разрешение 800  600 точек; лучшие модели предоставляют возможность вывода изображения с разрешением 1600  1280 точек;

  • Вертикальная развёртка. Это свойство описывает частоту смены изображений на экране. Чем выше этот показатель, чем устойчивее картинка дисплея. Среди стандартных значений – 60, 75, 85 Гц (по сегодняшним эргономическим требованиям ассоциации VESA минимальная допустимая частота смены кадров для монитора равна 85 Гц).

2.2.Видеоадаптер


Основное назначение видеоадаптера – формирование сигналов, в соответствии с которыми монитор может отображать ту или иную информацию на экране. Многие современные видеоадаптеры принадлежат к комбинированным устройствам и помимо своей главной функции способны выполнять те или иные дополнительные действия. Так, существуют видеоадаптеры, скомбинированные со звуковыми платами, TV-тюнерами и другими периферийными устройствами, чаще всего представляющими собой компоненты мультимедиа.

С помощью видеоадаптера формируются изображения с различными разрешениями: от 640  480 до 1600  1280 точек. Не меньшее значение имеет и глубина цвета, то есть количество битов, выделяемых для кодирования информации о цвете одного пикселя. В настоящее время распространены следующие стандарты на это количество:



  • 8 бит (256 цветов),

  • 16 бит (65 536 цветов — так называемый High Color),

  • 24 бит (16 777 216 цветов — True Color).

Кроме того, нередко встречаются режимы с 32 бит на цвет, однако они тоже относятся к категории True Color, поскольку в кодировании цвета участвуют только 24 из них, а оставшийся байт (8 бит) либо отдается под служебные нужды, либо используется для хранения трёхмерной информации.

Видеоадаптер состоит главным образом из



  1. набора микросхем (chipset) (в настоящее время, как правило, одной интегрированной схемы). Фирмы – производители наборов для видеоадаптеров находятся в состоянии жёсткой конкуренции, и выделить безусловного лидера в данном секторе рынка в настоящий момент невозможно. Наиболее заметные игроки на этом поле — S3, ATI Technologies, Matrox, Tseng Labs, Cirrus Logic, ASUStek.

  2. цифро-аналогового преобразователя (нередко также выполняется встроенным в основную микросхему),

  3. ПЗУ (так называемый BIOS видеоадаптера) и

  4. самой платы с закрепленными на ней клеммами и разъемами.

На каждой видеоплате размещается оперативная память, как правило, обладающая более высокими характеристиками, чем та, что используется в составе оперативной памяти компьютера. Объём этой оперативной памяти в адаптерах массового спроса варьируется в пределах от 4 до 64 Мбайт; именно он позволяет использовать высококачественные режимы кодирования цвета при высоких разрешениях (например, True Color при разрешениях 1024x768).

3.Основы работы с видеосистемой

3.1.Режимы работы


Все видеосистемы ПК, кроме MDA, могут работать в любом из двух режимов: текстовом или графическом. Главное их различие – в способе интерпретации содержимого видеобуфера.

Графический.

При этом имеется доступ к каждой элементарной точке экрана – пикселю. Пользователь может установить её в нужный ему цвет, но даже вывод букв или знаков, а тем более графических изображений, достаточно сложен.

Каждая точка имеет свою координату – значение по оси Х (горизонтальная ось, идущая от левого края монитора к правому) и по оси Y (вертикальная ось, идущая от верхнего края монитора к нижнему). Точка в верхнем левом углу имеет координату (0,0); точка в правом нижнем углу – например, (319,199). При этом каждая точка может быть установлена в любой цвет из числа допустимых, например, из 256 цветов (разрешение 320200, 256 цветов – видеорежим 13h).

В компенсацию своей сложности и медлительности графический режим позволяет изображать на экране всё, что ни пожелает пользователь.



Текстовый.

В этом случае вся доступная область экрана делится на отдельные позиции (в стандартном варианте – по 80 в 25 строках), в каждую из которых может быть выведен один символ (заполненный экран имеет 25  80 = 2000 символов). Верхняя левая ячейка имеет координату (0,0), правая нижняя – (79,24).

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

Далее, если это не оговорено особо, будем подразумевать работу в текстовом режиме с возможностью вывода информации в 16-цветовой гамме в 80 колонках и 25 строках с монитором VGA (sVGA).


3.2.Цвет


Всякий цвет на экране является композицией трёх основных цветов – красного (red), зелёного (green) и синего (blue). В простейшем случае кодировка заключается в установке или сбросе соответствующего бита. Таким образом формируются восемь цветов. К используемым в этом случае трём битам добавляется четвёртый – яркость (brightness) или интенсивность (intensity). Эта комбинация называется IRGB-цветом. Простейшие варианты кодирования цветов сведены в таблицу [Приложение 2].

Для хранения цветовых атрибутов символа в памяти компьютера отводится один байт:



  • старшие четыре бита (с 7-го по 4-й) заняты под кодирование фона символа (7-й бит – атрибут мерцания); биты 6–4 – стандартные цвета;

  • младшие четыре бита (с 3-го по 0-й) заняты под кодирование переднего плана символа.

3.3.Формирование символа


Как упоминалось выше, в текстовом режиме экран представляет собой страницу, состоящую из 25 строк по 80 колонок. В каждой её "клетке" может быть выведен только один символ. Изображение самого символа формируется по точкам (пикселам), сгруппированным в матрицу. Её размер может быть различен и зависит от номера видеорежима и типа адаптера, например, 8  8, или 8  16 точек (здесь первый параметр – число столбцов, второй – число строк в матрице). На рисунке 1 приведён пример формирования символа "А" в матрице 9  16 (стандартная матрица для текстового режима 3 адаптера VGA).

В видеосистемах имеется возможность устанавливать различные цвета для фона и переднего плана символа (см. Приложение 2). Таким образом, полное описание цвета для символа в простейшем варианте занимает один байт – 4 бита для фона и 4 бита для переднего плана.





Рисунок 1

Для преобразования кодов символов в точечное изображение используется знакогенератор – микросхема, в которой хранится "раскладка" каждого символа по строкам. Имея доступ к управлению этими строками, пользователь может влиять на сам рисунок символа. Изменение последнего называется перепрограммированием знакогенератора и основан на простом факте, что каждый бит матрицы символа должен принадлежать либо к фону (и тогда он кодируется цифрой 0), либо к переднему плану (кодируется цифрой 1). Так, описание вышеприведённого рисунка буквы занимает 16 байт (16 строк развёртки символьной матрицы) и выглядит так:



  • первая строка: 00000000 в двоичном виде или 00 в шестнадцатеричном;

  • вторая строка: 00000000 в двоичном виде или 00 в шестнадцатеричном;

  • третья строка: 00011000 в двоичном виде или 18 в шестнадцатеричном;

  • четвёртая строка: 00111100 в двоичном виде или 3С в шестнадцатеричном;

  • пятая строка: 01111110 в двоичном виде или 7Е в шестнадцатеричном;

  • шестая строка: 11000011 в двоичном виде или С3 в шестнадцатеричном

  • и так далее.

Полное описание изображённого символа таково (шестнадцатеричный вид):
00, 00, 18, 3С, 7Е, С3, С3, С3, С3, FF, FF, С3, С3, С3, 00, 00. Подменой этой цепочки своей, заготовленной заранее, можно добиться изменения рисунка данного символа.

Количество строк развёртки различно для различных видеоадаптеров и видеорежимов.


3.4.Видеопамять


Видеопамять – область оперативной памяти, предназначенная для хранения текста или графической информации, выводимой на экран.

В различных режимах работы монитора эта область имеет различный начальный адрес и разную длину, например:



  • MDA – с адреса B000:0000 до B000:0FFF длиной 4К;

  • CGA – от B800:0000 до B800:3FFF длиной 16К;

  • EGA, VGA, sVGAот B800:0000 до B800:7FFF длиной 32К.








Изменение какого-либо байта в этой области приводит к изменению изображения на экране. Того же результата можно достичь при выводе нужной информации на экран, но если скорость записи напрямую в видеобуфер составляет сотни тысяч байт в секунду, то дисплей воспринимает новые данные со скоростью около 1000 байт в секунду (при этом содержимое экрана меняется за 2 секунды).

3.5.Видеостраницы


Как уже упоминалось ранее, всякий экран содержит 2000 символов (например, пустой – 2000 пробелов), каждый из которых характеризуется кодом в таблице ASCII (один байт), цветом фона (1/2 байта) и цветом переднего плана (1/2 байта). Таким образом, для хранения всего содержимого экрана необходим объём памяти в 4000 байт; именно такая часть (точнее, 4096 байт) видеопамяти называется видеостраницей. Поскольку объём видеопамяти обычно больше этого числа (например, 32К для видеоадаптеров VGA), то имеется возможность организовать хранение данных сразу в нескольких видеостраницах (до 8), по-прежнему демонстрируя на экране только одну из них.

В памяти компьютера это выглядит так:






Так как видеопамять компьютера начинается с адреса B800:0000, то это – адрес начала страницы № 0. Следующая страница начинается с адреса B800:0000+4096, т.е. B800:1000; страница № 2 – с адреса B800:2000 и т.д.

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



Несмотря на то, что хранить и формировать можно все 8 страниц, на экран выводится только одна из них (она получает название активной). Этим можно воспользоваться для создания простых эффектов мультипликации в текстовом режиме – переключаясь между страницами (а это происходит моментально), можно "оживить" какие-нибудь изображения.

Внутри самой видеостраницы запись характеристик символа происходит следующим образом:

  • первым байтом записывается код символа;

  • во втором байте хранится информация и цветах:

  • 4 бита – описание цвета фона для символа;

  • 4 бита – описание цвета переднего плана символа.

Таким образом, связь между адресами видеопамяти, характеристиками символа и его экранными координатами выглядит следующим образом (здесь, как обычно, первая координата экрана – х (столбец), число в промежутке от 0 до 79; вторая координата – у (строка), число от 0 до 24):


Адрес видеопамяти:

B800:0000

B800:0001

B800:0002

B800:0003






Символ

Цветá

Символ

Цветá



Координаты экрана:

(0,0)

(1,0)


3.6.Управление курсором


В текстовом режиме возможно управление формой курсора и его позицией на экране.

Управление формой курсора



Курсор имеет вид прямоугольника, по ширине равного символу. Программист может влиять только на высоту этого прямоугольника, задавая различные значения для верхнего и нижнего его краёв – верхней и нижней строк развёртки курсора. Нумерация строк развёртки начинается сверху, с числа 0. Количество строк развёртки совпадает с числом строк развёртки для символьной матрицы (см. п.3.3); на рисунке число строк развёртки равно 8.

Ниже продемонстрированы различные варианты формирования курсора для видеоадаптера EGA. Возможности видеоадаптера VGA в этом плане существенно ограничены: так, последний не позволяет осуществить возможность "заворачивания" курсора и формирования его из двух частей (см. пример 4).

Пример 1


Пример 2


Пример 3


Пример 4


Пример 1: начальная строка развёртки = 7, конечная строка развёртки = 7;

Пример 2: начальная строка развёртки = 3, конечная строка развёртки = 7;

Пример 3: начальная строка развёртки = 0, конечная строка развёртки = 7;

Пример 4: начальная строка развёртки = 7, конечная строка развёртки = 1.

Кроме того, в любом видеоадаптере возможна установка невидимого курсора. Для этого следует перевести курсор за пределы активной видеостраницы (задать, например, номер строки 28). Но более корректный вариант для достижения этой цели – задание верхней строки развёртки в 32 (значение, заведомо превышающее любое допустимое число).

Управление позицией курсора

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

Верхний левый угол любой видеостраницы имеет координаты (0,0) (здесь и далее первая координата – координата х (столбец), а вторая координата – координата у (строка)), правый нижний – координаты (79,24). Внутри этих пределов курсор может перемещаться без особых хлопот, но попытка переместить его, например, на 25-ю строку приведёт к тому, что он просто исчезнет с экрана.

4.Основные функции прерывания 10h BIOS


Функция 00h. Установка режима монитора

Вход: AH = 00h

AL = номер режима



Выход: нет

Функция переводит монитор в режим, определённый значением регистра AL. В текстовых режимах экран очищается, заполняясь символами "пробел" (код 20h) с атрибутами цвета 07 (на чёрном фоне светло-серый символ); в графических – пикселями с цветом 0 (чёрный цвет). Задание того же видеорежима, в котором работает монитор, – простейший способ очистки экрана.

При желании можно избежать очистки экрана, установив в 1 старший бит регистра AL.

Примеры:

1. Установка видеорежима 3 (текст, 8025, 16 цветов, матрица развёртки 916):



MOV AH,0
MOV AL,3
INT 10h

2. То же, но без очистки экрана:



MOV AH,0
MOV AL,3
OR AL,10000000b
INT 10h

Функция 01h. Установка формы курсора



Вход: AH = 01h

СН = верхняя строка развёртки

СL = нижняя строка развёртки

Выход: нет

В регистрах СН и СL используются только биты 0–4 (значения 0–31). При установке 5-го бита регистра СН курсор становится невидимым, но корректно подчиняется всем командам перемещения.



Примеры:

1. Установка формы курсора в виде полосы сверху:



MOV AH,1
MOV СН,0
MOV СL,1
INT 10h

2. Установка невидимого курсора:



MOV AH,1
MOV СН,00100000b
OR СL,1
INT 10h

Функция 02h. Установка позиции курсора



Вход: AH = 02h

ВН = номер видеостраницы

DН = строка (координата у)

DL = столбец (координата х)



Выход: нет

Верхний левый угол имеет координату (0,0). Как правило, на экране 80 колонок (0–79) в 25 строках (0–24). Перемещение курсора за 24-ю строку делает его невидимым.



Пример:

Установка курсора в 3-ю колонку 5-й строки:



MOV AH,2
MOV BН,0
MOV DН,5
MOV DL,3
INT 10h

Функция 03h. Считывание состояния курсора



Вход: AH = 03h

ВН = номер видеостраницы



Выход: CН = верхняя строка развёртки

CL = нижняя строка развёртки

DН = строка (координата у)

DL = столбец (координата х)

Функция используется для определения исходного состояния курсора с тем, чтобы иметь возможность восстановить его после работы программы.

Пример:

MOV AH,3
MOV BН,0
INT 10h

Функция 04h. Считывание позиции светового пера

Это устройство в ПК практически не используется, поэтому данная функция рассматриваться не будет.

Функция 05h. Установка активной видеостраницы



Вход: AH = 05h

AL = номер видеостраницы



Выход: нет

Функция выводит на экран изображение запрашиваемой видеостраницы. Курсор при этом оказывается в той позиции, в которую он был перемещён на этой видеостранице при помощи функции 02h.

Функция не проверяет, существует ли запрашиваемая видеостраница – в регистре AL можно задать, например, число 12.

Пример:

Установка видеостраницы 3:



MOV AH,5
MOV AL,3
INT 10h

Функция 06h. Скроллинг окна вверх



Вход: AH = 06h

АL = число строк для скроллинга

ВН = атрибут для очищаемых строк

СН = строка (координата у) верхнего левого угла окна скроллинга

СL = столбец (координата х) верхнего левого угла окна скроллинга

DН = строка (координата у) нижнего правого угла окна скроллинга

DL = столбец (координата х) нижнего правого угла окна скроллинга

Выход: нет


До скроллинга




После скроллинга



В этом примере осуществляется скроллинг двух строк. 1-я и 2-я строки в результате исчезают, строки с 3-й по 6-ю поднимаются на две строки вверх, а освободившееся пространство заполняют две пустые строки с некоторыми атрибутами (цвет фона, цвет переднего плана).

Если задать в AL число 0, то окно будет очищено полностью.



Пример:

Один из вариантов осуществления вышеописанного действия:



MOV AH,6
MOV AL,2
MOV BН,1Eh ; на синем фоне жёлтыми буквами
MOV СН,10
MOV СL,20
MOV DН,15
MOV DL,40
INT 10h

Функция 07h. Скроллинг окна вниз



Вход: AH = 06h

АL = число строк для скроллинга

ВН = атрибут для очищаемых строк

СН = строка (координата у) верхнего левого угла окна скроллинга

СL = столбец (координата х) верхнего левого угла окна скроллинга

DН = строка (координата у) нижнего правого угла окна скроллинга

DL = столбец (координата х) нижнего правого угла окна скроллинга

Выход: нет

Функция аналогична предыдущей за исключением направления. В рамках примера для функции 06h действия будут такими:



  • исчезнут строки 5 и 6;

  • строки 1–4 сместятся вниз на две строки;

  • две пустые строки появятся сверху.

Пример:

MOV AH,7
MOV AL,2
MOV BН,1Eh ; на синем фоне жёлтыми буквами
MOV СН,10
MOV СL,20
MOV DН,15
MOV DL,40
INT 10h

Функция 08h. Считывание символа и его атрибута в позиции курсора



Вход: AH = 08h

ВН = номер видеостраницы



Выход: АН = атрибут символа

АL = код символа

Функция используется, в частности, программами проверки орфографии.

Пример:

Определение символа, находящегося в 8 колонке 12 строки:



MOV AH,2
MOV BН,0
MOV DН,12
MOV DL,8
INT 10h
MOV AH,8
MOV BН,0
INT 10h

Функция 09h. Запись символа и его атрибута в позиции курсора



Вход: AH = 09h

АL = код символа

ВН = видеостраница

ВL = атрибут символа

СХ = количество повторов записи

Выход: нет

Функция записывает символ, начиная с позиции курсора, столько раз, сколько указано в регистре СХ. Сам курсор при этом не перемещается. Если при выводе указанный символ дойдёт до конца строки, произойдёт автоматический переход его на следующую строку.



Пример:

Заполнение нижних трёх строк символом (*) чёрным цветом на зелёном фоне:



MOV AH,2
MOV BН,0
MOV DН,22
MOV DL,0
INT 10h
MOV AH,9
MOV AL,'*'
MOV BН,0
MOV ВL,20h ; на зелёном фоне чёрными символами
MOV СХ,80*3
INT 10h

Функция 0Аh. Запись символа в позиции курсора



Вход: AH = 0Аh

АL = код символа

ВН = видеостраница

СХ = количество повторов записи



Выход: нет

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



Пример:

Заполнение двух верхних строк символом (+):



MOV AH,2
MOV BН,0
MOV DН,0
MOV DL,0
INT 10h
MOV AH,9
MOV AL,'+'
MOV BН,0
MOV СХ,80*2
INT 10h

Функция 0Вh. Выбор цветовой палитры и установка цвета окаймления

Эта функция рассматриваться не будет. Для современных адаптеров в этих же целях используется функция 10h.

Функция 0Сh. Запись пикселя



Вход: AH = 0Сh

АL = цвет пикселя

ВН = видеостраница

СХ = столбец (координата х)

DХ = строка (координата у)

Выход: нет

Функция используется в графических режимах.



Пример:

Вывод пикселя красного цвета в точку с координатами (100,200) видеостраницы 0:



MOV AH,0Сh
MOV AL,4
MOV BН,0
MOV СХ,100
MOV DХ,200
INT 10h

Функция 0Dh. Считывание пикселя



Вход: AH = 0Dh

ВН = видеостраница

СХ = столбец (координата х)

DХ = строка (координата у)



Выход: AL = цвет пикселя

Функция используется в графических режимах.



Пример:

Определение цвета пикселя в точке с координатами (200,300) видеостраницы 1:



MOV AH,0Dh
MOV BН,1
MOV СХ,200
MOV DХ,300
INT 10h

Функция 0Еh. Запись символа в телетайпном режиме



Вход: AH = 0Еh

АL = код символа

ВН = видеостраница

Выход: нет

Телетайпный режим подразумевает перемещение курсора на одну позицию вправо после вывода символа. При выводе символа в конце строки курсор переходит на нулевую колонку следующей; при выводе символа в правом нижнем углу экрана осуществляется скроллинг содержимого всего экрана на одну строку вверх и курсор перемещается в точку (0,24). С помощью этой функции может быть реализован простейший текстовый редактор.



Пример:

Вывод символа '$' в точку с координатами (40,20) видеостраницы 0:



MOV AH,2
MOV BН,0
MOV DН,20
MOV DL,40
INT 10h
MOV AH,0Еh
MOV AL,'$'
MOV BН,0
INT 10h

Функция 0Fh. Считывание состояния видеосистемы



Вход: AH = 0Fh

Выход: АН = число столбцов

АL = номер видеорежима

ВН = номер активной видеостраницы

Функция полезна для сохранения основных параметров исходного состояния монитора с последующим их восстановлением.



Пример:

Простейший вариант очистки экрана:



MOV AH,0Fh
INT 10h
MOV AH,0
INT 10h

Функция 10h. Управление регистрами палитры, регистрами ЦАП и атрибутами яркости

Эта функция рассматриваться не будет.

Функция 11h. Управление знакогенератором

Эта функция состоит из 15 подфункций, из которых рассматривается только одна – замена матрицы символа своей.

Вход: AH = 11h

АL = 0


ВН = число байт в определении символа

ВL = номер таблицы

СХ = количество переопределяемых символов

DХ = код первого из переопределяемых символов

ES:BP = адрес таблицы заменяемых символов

Выход: нет

Число байт в определении символа – число строк развёртки символа.



Пример:

Перекодирование символа "пробел" для адаптера VGA (матрица 916). Предполагается, что сам рисунок символа закодирован в переменной SYM:



MOV AH,11h
MOV AL,0
MOV BН,16
MOV BL,0
MOV СХ,1
MOV DХ,' '
MOV DI,DS
MOV ES,DI
MOV BP,OFFSET SYM
INT 10h

Функция 12h. Альтернативный вариант конфигурирования системы

Эта функция рассматриваться не будет.

Функция 13h. Запись символьной цепочки



Вход: AH = 13h

АL = 0 – в BL находится атрибут символов, курсор не перемещается

1 – в BL находится атрибут символов, курсор перемещается

2 – атрибуты символов находятся в цепочке, курсор не перемещается

3 – атрибуты символов находятся в цепочке, курсор перемещается

ВН = видеостраница

ВL = атрибут символов

СХ = длина символьной цепочки (количество символов)

DН = строка начала вывода (координата у)

DL = столбец начала вывода (координата х)

ES:BP = адрес начала цепочки символов

Выход: нет

При необходимости происходит перемещение курсора на нулевую колонку следующей строки и скроллинг.



Пример:

Вывод символов из цепочки String в 0 видеостраницу белыми буквами на красном фоне, начиная с позиции (10,20):



MOV AH,13h
MOV AL,0
MOV BН,0
MOV BL,4Fh
MOV СХ,33
MOV DН,20
MOV DL,10
POP DS
PUSH ES
MOV BP,OFFSET STRING
INT 10h


Приложение . 1Словарь


MS-DOS

Microsoft Disk Operating System – дисковая операционная система фирмы Microsoft для персональных ЭВМ, использующих микропроцессор, совместимый с Intel 8086

BIOS

Basic Input/Output System – базовая система ввода/вывода. Набор программ компьютера, осуществляющий наиболее общие мероприятия по тестированию и обслуживанию периферийных устройств. Физически выполнен в виде микросхемы, впаянной на материнской плате

Периферийное устройство

Устройство, конструктивно отделённое от основного блока ПК

IBM

International Business Machines – американская корпорация, разработчик и изготовитель ЭВМ, внешних устройств и программного обеспечения

Пиксель

Pixel (picture element) – элемент растра, точка, минимальная единица изображения, к которой можно получить доступ для установки цвета

Адаптер

Часть периферийного устройства, используемая для обеспечения обмена данными с процессором: для преобразования сигналов, получаемых от процессора, в понятные данному устройству и наоборот

VESA

Video Electronics Standards Association – ассоциация стандартов в области видеоэлектроники

ASCII

American Standard Code for Information Interchange – американский стандартный код для обмена информацией, представленный в виде таблицы

MPR

Шведский институт мер и испытаний. Это же название носит разработанная им спецификация, в которой приводятся предельно допустимые значения излучений мониторов (электростатическое, электромагнитное и низких частот)



Приложение . 2Простейшее IRGB-кодирование цвета





Компонент

Номер

Название цвета

Использование в

I

R

G

B

цвета

Английский вариант

Русский вариант

переднем плане

фоне

0

0

0

0

0

BLACK

Черный

Да

Да

0

0

0

1

1

BLUE

Синий

Да

Да

0

0

1

0

2

GREEN

Зеленый

Да

Да

0

0

1

1

3

CYAN

Сине-зеленый

Да

Да

0

1

0

0

4

RED

Красный

Да

Да

0

1

0

1

5

MAGENTA

Малиновый

Да

Да

0

1

1

0

6

BROWN

Коричневый

Да

Да

0

1

1

1

7

LIGHTGRAY

Светло-серый

Да

Да

1

0

0

0

8

DARKGRAY

Темно-серый

Да

Нет

1

0

0

1

9

LIGHTBLUE

Ярко-синий

Да

Нет

1

0

1

0

10

LIGHTGREEN

Ярко-зеленый

Да

Нет

1

0

1

1

11

LIGHTCYAN

Яркий сине-зеленый

Да

Нет

1

1

0

0

12

LIGHTRED

Ярко-красный

Да

Нет

1

1

0

1

13

LIGHTMAGENTA

Ярко-малиновый

Да

Нет

1

1

1

0

14

YELLOW

Желтый

Да

Нет

1

1

1

1

15

WHITE

Белый

Да

Нет



Приложение . 3Задание на контрольную работу


Контрольная работа призвана оценить усвоение студентом материала второй части курса "Системное программное обеспечение. Видеосистема персонального компьютера фирмы IBM".

Контрольная работа пишется либо на языке Си, либо на языке Ассемблер.




  1. Подготовить на бумаге и закодировать рисунок символа (адаптер VGA; матрица 916);

  2. Запомнить исходное состояние видеосистемы и монитора:

  • видеостраницу, видеорежим;

  • строки развёртки курсора и его координаты;

  • экран;

  1. Для варианта языка Си: запросить с клавиатуры код заменяемого символа. Для обоих вариантов: заполнить заменяемым символом экран;

  2. Заменить рисунок символа;

  3. Восстановить исходное состояние видеосистемы и монитора.

Для удобства просмотра рекомендуется использовать после пунктов 2, 3 и 4 задержку до нажатия клавиши – функция 7 прерывания 21h.



Приложение . 4Пример программы работы со знакогенератором на языке Си


#include
#include

void main(void)


{
char FontMap[] =
{
0xFF, 0xFF, 0xFE, 0xFE, 0xFC, 0xFC, 0xF8, 0xF8,
0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x80
};
unsigned ScanLines=16, Mode;
struct REGPACK R;

R.r_ax = 0x0700; // Задержка до нажатия


intr(0x21,&R);

// +-----------------------------+


// Запрос состояния видеосистемы
R.r_ax = 0x0F00;
intr(0x10,&R);
Mode = R.r_ax & 0x007F; // Сброс бита сохранения экрана

R.r_es = FP_SEG((void far *)FontMap); // Загрузка адреса таблицы


R.r_bp = FP_OFF((void far *)FontMap);

// +---------------------------------+


// Загрузка пользовательской таблицы
R.r_ax = 0x1100;
R.r_bx = (ScanLines << 8) + 0; // Число байт в определении
// символа и номер таблицы
R.r_cx = 1; // Число символов переопределения
R.r_dx = 0x0020; // Код первого переопределяемого. символа

intr(0x10,&R);

R.r_ax = 0x0700; // Задержка до нажатия
intr(0x21,&R);

R.r_ax = 0x0080 + Mode; // Восстановление режима и таблицы


intr(0x10,&R); // знакогенератора

R.r_ax = 0x0800; // Задержка до нажатия


intr(0x21,&R);
}

Литература


  1. Борковский А.Б. Англо-русский словарь по программированию и информатике (с толкованиями) – М.: Московская международная школа переводчиков, 1992. – 335 с.

  2. Пашкина Н. Л., Петухов О. А., Шадрин И. Ю. Основы алгоритмизации и программирование. Часть II. Сложные типы данных и файлы в языке Си: Учеб. пособие. – СПб.: СЗПИ, 1998. – 128 с.

  3. Григорьев В.Л. Видеосистемы ПК фирмы IBM. – М.: Радио и связь, 1993. – 192 с.



Оглавление

Введение 1

Литература 19

Оглавление 20





/