русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Прерывание BIOS INT 10H


Дата добавления: 2015-06-12; просмотров: 4842; Нарушение авторских прав


Прерывание INT 10H обеспечивает управление всем экраном. В регистре AH устанавливается код, определяющий функцию прерывания. Команда cохраняет содержимое регистров BX, CX, DX, SI и BP. Ниже описывается все возможные функции.

AH=00

Установка режима. Данная функция позволяет переключать цветной монитор в текстовый или графический режим. Установка pежима для выполняемой в текущий момент программы осуществляется c помощью INT 10H.

AH=01

Установка размера курсора. Курсор не является символом из набора ASCII-кодов. Компьютер имеет собственное аппаратное обеспечение для управления видом курсора. Для этого имеется специальная обработка по INT прерыванию. Обычно символ курсоpа похож на символ подчеркивания.

AH=02

Установка позиции курсора. Эта функция устанавливает курcор в любую позицию на экране в соответствии с координатами cтроки и столбца.

AH=03

Чтение текущего положения курсора. Программа может определить положение курсора на экране (строку и столбец), а также pазмер курсора, следующим образом:

AH=04

Чтение положения светового пера. Данная функция используeтся в графическом режиме для определения положения светового пеpа.

AH=05

Выбор активной страницы.

AH=06

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

Ранее код 06 использовался для очистки экрана. В текстовом режиме установка в регистре AL значения 00 приводит к полной прокрутке вверх всего экрана, очищая его пробелами. Установка ненулевого значения в регистре AL определяет количество строк прокрутки экрана вверх. Верхние строки уходят с экрана, а чистые строки вводятся снизу. Следующие команды выполняют прокрутку всего экрана на одну строку:



MOV AX,0601H ;Прокрутить на одну строку вверх

MOV BH,07 ;Атрибут: нормальный, черно-белый

MOV CX,0000 ;Координаты от 00,00

MOV DX,184FH ; до 24,79 (полный экран)

INT 10H ;Вызвать BIOS

Для прокрутки любого количества строк необходимо установить соответствующее значение в регистре AL. Регистр BH содержит атрибут для нормального или инвертированного отображения, мигания, установки цвета и так далее. Значения в регистрах CX и DX позволяют прокручивать любую часть экрана. Ниже объясняется стандартный подход к прокрутке:

1. Определить в элементе ROW (строка) значение 0 для установки строки положения курсора.

2. Выдать текст и продвинуть курсор на следующую строку.

3. Проверить, находится ли курсор на последней строке (CMP ROW,22).

4. В случае, если да, то увеличить элемент ROW (INC ROW) и выйти.

5. В случае, если нет, то прокрутить экран на одну строку и, используя ROW переустановить курсор.

AH=07

Прокрутка экрана вниз. Для текстового режима прокрутка экрана вниз обозначает удаление нижних строк и вставка чистых строк сверху.

Регистр AH должен содержать 07, значения остальных регистpов аналогичны функции 06 для прокрутки вверх.

AH=08

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

MOV AH,08 ;Запрос на чтение атр./симв.

MOV BH,00 ;Страница 0 (для текстового реж.)

INT 10H ;Вызвать BIOS

Данная функция возвращает в регистре AL значение символа, а в AH — его атрибут. В графическом режиме функция возвращает шест.00 для не ASCII-кодов. Так как эта функция читает только один cимвол, то для символьной строки необходима организация цикла.

AH=09

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

MOV AH,09 ;Функция вывода

MOV AL,символ ;Выводимый символ

MOV BH,страница ;Номер страницы (текст.реж.)

MOV BL,атрибут ;Атрибут или цвет

MOV CX,повторение ;Число повторений символа

INT 10H ;Вызвать BIOS

В регистр AL должен быть помещен выводимый на экран символ. Значение в регистре CX определяет число повторений символа на экране. Вывод на экран последовательности различных символов требует организации цикла. Данная функция не перемещает курсор. В следующем примере на экран выводится пять мигающих «сердечек» в инвертированном виде:

MOV AH,09 ;Функция вывода

MOV AL,03H ;Черви (карточная масть)

MOV BH,00 ;Страница 0 (текст. режим)

MOV BL,0F0H ;Мигание, инверсия

MOV CX,05 ;Пять раз

INT 10H ;Вызвать BIOS

В текстовом (но не в графическом) режиме символы автоматически выводятся на экран и переходят с одной строки на другую. Для вывода на экран текста запроса или сообщения необходимо составить программу, которая устанавливает в регистре CX значение 01 и в цикле загружает в регистр AL из памяти выводимые символы текста. Так как регистр CX в данном случае занят, то нельзя использовать команду LOOP. Кроме того, при выводе каждого символа необходимо дополнительно продвигать курсор в следующий столбец (функция 02).

В графическом режиме регистр BL используется для определения цвета графики. В случае, если бит 7 равен 0, то заданный цвет заменяет текущий цвет точки, если бит 7 равен 1, то происходит комбинация цветов с помощью команды XOR.

AH=0A

Вывод символа в текущую позицию курсора. Единственная разница между функциями 0A и 09 состоит в том, что функция 0A не устанавливает атрибут:

MOV AH,0AH ;Функция вывода

MOV AL,символ ;Выводимый символ

MOV BH,страница ;Номер страницы (для текста)

MOV CX,повторение ;Число повторений символа

INT 10H ;Вызвать BIOS

Для большинства применений команда прерывания DOS INT 21H более удобна.

AH=0E

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

Для выполнения этой функции необходимо установить в регистре AH шест. значение 0E, в регистр AL поместить выводимый символ, цвет текста (в графическом режиме) занести в регистр BL и номер страницы для текстового режима — в регистр BH. Звуковой сигнал (код 07H), возврат на одну позицию (08H), конец строки (0AH) и возврат каретки (0DH) действуют, как команды для форматизации экрана.

Данная функция автоматически продвигает курсор, переводит символы на следующую cтроку, выполняет прокрутку экрана и сохраняет текущие атрибуты экрана.

AH=0F

Получение текущего видео режима. Данная функция возвращает в регистре AL текущий видео режим, в pегистре AH — число символов в строке (20, 40 или 80), в регистре BH — номер страницы.

 

AH=13

Вывод символьной строки (только для AT). Данная функция позволяет на компьютерах типа AT выводить на экран символьные строки с установкой атрибутов и перемещением курсора:

MOV AH,13H ;Функция вывода на экран

MOV AL,сервис ;0, 1, 2 или 3

MOV BH,страница ;

LEA BP,адрес ;Адрес строки в ES:BP

MOV CX,длина ;Длина строки

MOV DX,экран ;Координаты на экране

INT 10H ;Вызвать BIOS

Возможен следующий дополнительный сервис:

u0 — использовать атрибут и не перемещать курсор;

u1 — использовать атрибут и переместить курсор;

u2 — вывести символ, затем атрибут и не перемещать курсор;

u3 — вывести символ, затем атрибут и переместить курсор.



<== предыдущая лекция | следующая лекция ==>
Эффект выделения | Другие операции ввода/вывода


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.216 сек.