Управление устройствами ввода и вывода
Лабораторная работа № 4
Управление устройствами ввода и вывода
1 Цель работы
Изучение прерываний BIOS для ввода информации с клавиатуры, вывода информации на видеодисплей в текстовом режиме.
2 Теоретические сведения
Персональный компьютер (ПК) имеет развитые подсистемы ввода информации с клавиатуры, вывода текстовой и графической информации на видеодисплей, генерации звуковых сигналов. Управление этими подсистемами может осуществляться выполнением соответствующих прерываний BIOS или прерываний DOS.
2.1. Обмен данными с клавиатурой
При нажатии или отпускании той или иной клавиши клавиатуры ее микросхемы передают в компьютер последовательность данных, состоящую из одного или большего числа байтов. Эта последовательность, называемая сканируемым кодом, однозначно определяет нажатую клавишу. Клавиатура вырабатывает различные сканируемые коды в зависимости от того, нажимается или отпускается клавиша. В компьютере вводом с клавиатуры управляет контроллер клавиатуры. Всякий раз, когда контроллер клавиатуры получает байт данных, он генерирует прерывание 09h. ROM BIOS содержит обработчик прерывания 09h, который считывает байт, поступивший в контроллер клавиатуры, и осуществляет его обработку.
Обработчик прерывания 09h транслирует сканируемые коды в 2-байтовые значения, которые, как правило, более полезны для программ, чем исходные сканируемые коды. Младший байт каждого 2-байтового значения содержит код ASCII, соответствующий нажатой клавише. Старший байт обычно содержит соответствующий сканируемый код клавиатуры. Специальные клавиши имеют значение 00h в младшем байте и сканируемый код в старшем байте. Младший байт называется основным, старший - вспомогательным. Программы ROM BIOS помещают транслируемые пары байтов в очередь 32-байтовый буфер клавиатуры. Буфер клавиатуры находится в оперативной памяти в области данных ROM BIOS, начиная с адреса 0040:001Eh. Эти пары байтов хранятся там до тех пор, пока они не будут востребованы какой-либо программой, которая осуществляет чтение данных, поступающих с клавиатуры.
Когда основной байт транслируемого кода представляет собой код знака ASCII из диапазона 1..255 (01h..FFh), это говорит о том, что была нажата клавиша со стандартным знаком (либо код знака был введен с цифровой клавиатуры при нажатой клавише <Alt>). Обычно в этом случае сканируемый код во вспомогательном байте можно игнорировать. Однако программа может проверить вспомогательный байт для идентификации дублирующих знаков клавиатуры.
Когда основной байт является нулевым, это означает, что была нажата специальная, не соответствующая знаку из таблицы ASCII, клавиша. Специальные клавиши включают функциональные клавиши (<F1>…<F12>), функциональные клавиши в паре с клавишами смены регистра (<Ctrl>, <Alt>, <Shift>), клавиши управления курсором, клавиши <Home>, <End>, <Insert>, <Delete>, <PageUp>, <PageDown>, и некоторые комбинации клавиш, в которые входят <Ctrl> и <Alt>. Когда нажата какая-нибудь из этих клавиш в отдельности или в комбинации с другими клавишами, вспомогательный байт содержит уникальное значение, определяющее, какая клавиша или комбинация клавиш была нажата.
Для обслуживания клавиатуры предназначено прерывание BIOS с номером 16h. Это прерывание объединяет несколько служб (функций), которые активизируются в соответствии со значением, помещенным в регистр AH [9].
Ожидание нажатия клавиши служба 10h. Функция 10h удаляет очередной символ из буфера клавиатуры. Если буфер клавиатуры пуст, обработчик прерывания переходит в состояние ожидания, пока не будет нажата клавиша на клавиатуре. Параметры функции приведены в табл. 4.1.
Таблица 4.1. Параметры функции 10h прерывания 16h
Описание |
Ожидает нажатия клавиши, читает и удаляет очередной символ из буфера |
Параметры |
AH = 10h |
Что возвращается |
AH = скан-код нажатой клавиши AL = ASCII-код нажатой клавиши |
Пример |
MOV AH, 10 INT 16 |
Примечание |
Если буфер клавиатуры пуст, функция переходит в состояние ожидания нажатия клавиши |
Проверка состояния буфера клавиатуры служба 11h. Функция 11h позволяет узнать, была ли нажата клавиша на клавиатуре. Это определяется пот наличию символа в буфере клавиатуры. Если буфер не пуст, функция возвращает ASCII-код и скан-код первого символа, находящегося в буфере. После вызова функции код символа, находящегося в буфере, не удаляется. Эта функция позволяет периодически опрашивать состояние клавиатуры в цикле, в котором выполняются какие-либо другие задачи. Описание функции приведено в табл. 4.2.
Таблица 4.2. Параметры функции 11h прерывания 16h
Описание |
Проверяет состояние буфера клавиатуры |
Параметры |
AH = 11h |
Что возвращается |
Если буфер клавиатуры не пуст: AH = скан-код нажатой клавиши, AL = ASCII-код нажатой клавиши, ZF = 0. Если буфер клавиатуры пуст: ZF = 1. |
Пример |
MOV AH, 11 INT 16 JZ addr ; переход, если ZF = 1 (буфер пуст) |
Примечание |
Код символа из буфера не удаляется |
Получение флагов состояния клавиатуры служба 12h. С помощью функции 12h можно получить информацию о текущем состоянии флагов клавиатуры, обычно в результате периодического опроса. Анализ состояния флагов позволяет сделать вывод о факте нажатия определенных клавиш. Описание функции приведено в табл. 4.3. Значения флагов клавиатуры приведены в табл. 4.4.
Таблица 4.3. Параметры функции 12h прерывания 16h
Описание |
Возвращает флаги состояния клавиатуры |
Параметры |
AH = 12h |
Что возвращается |
AX = копия флагов состояния клавиатуры |
Пример |
MOV AH, 12 INT 16 |
Примечание |
Флаги состояния клавиатуры находятся в слове по смежным адресам 0040:0017h (младший байт) и 0040:0018h (старший байт) |
Таблица 4.4. Значения флагов клавиатуры, возвращаемые функцией 12h прерывания 16h
Номер бита |
Описание |
0 |
Нажата правая клавиша <Shift> |
1 |
Нажата левая клавиша <Shift> |
2 |
Нажата любая из клавиш <Ctrl> |
3 |
Нажата любая из клавиш <Alt> |
4 |
Переключатель <Scroll Lock> установлен (на клавиатуре горит светодиод Scroll Lock) |
5 |
Переключатель <Num Lock> установлен (на клавиатуре горит светодиод Num Lock) |
6 |
Переключатель <Caps Lock> установлен (на клавиатуре горит светодиод Caps Lock) |
7 |
Переключатель <Insert> установлен |
8 |
Нажата левая клавиша <Ctrl> |
9 |
Нажата левая клавиша <Alt> |
10 |
Нажата правая клавиша <Ctrl> |
11 |
Нажата правая клавиша <Alt> |
12 |
Нажата клавиша <Scroll Lock> |
13 |
Нажата клавиша <Num Lock> |
14 |
Нажата клавиша <Caps Lock> |
15 |
Нажата клавиша <Sys Req> |
Прерывание клавиатуры немедленно обновляет эти биты статуса, как только будет нажата одна из клавиш-переключателей, даже если не было считано ни одного символа из буфера клавиатуры. Прерывание клавиатуры проверяет состояние статусных битов перед тем, как интерпретировать нажатые клавиши
Помещение кода клавиши в буфер клавиатуры служба 05h. Функция 05h позволяет поместить код нужной клавиши в буфер клавиатуры. Код клавиши состоит из двух байтов скан-кода и ASCII-кода. Параметры функции приведены в табл. 4.5.
Таблица 4.5. Параметры функции 05h прерывания 16h
Описание |
Помещает код клавиши в буфер клавиатуры |
Параметры |
AH = 05h CH = скан-код CL = ASII-код |
Что возвращается |
CF = 0 и AL = 0 в случае успешного выполнения; CF = 1 и AL = 1 в случае, если нет места в буфере клавиатуры |
Пример |
MOV AH, 5 MOV CH, 3B ; скан-код клавиши F1 MOV CL, 0 ; ASCII-код INT 16 |
2.2. Управление видеодисплеем в текстовом режиме
Управление видеодисплеем в текстовом режиме сводится к определению его статуса, управлению цветом отображаемых символов и цветом фона, формированию строк символов с необходимой информацией, и, возможно, изменению вида отдельных символов.
В текстовом режиме возможен вывод информации на экран одним из следующих способов:
- c помощью функций (служб) прерывания DOS с номером 21h. Данные функции позволяют перенаправить потоки ввода-вывода на любое другое устройство, такое как принтер или диск. Вывод на экран с помощью функций прерывания 21h выполняется довольно медленно, и цвет символов изменить нельзя;
- с помощью функции (служб) прерывания BIOS с номером 10h. Они выполняются гораздо быстрее, чем функции прерывания DOS 21h, и позволяют изменить цвет текста на экране. При заполнении символами больших областей на экране с помощью функций прерывания 10h можно заметить небольшую задержку вывода. Кроме того, данные, выводимые на экран, нельзя перенаправить на другое устройство;
- прямой доступ в видеопамять. Вывести символы на экран можно также путем перемещения их непосредственно в область памяти видеоадаптера. При этом достигается максимальная скорость вывода, однако данные также нельзя перенаправить на другое устройство. Следует отметить, что данный метод также можно использовать при работе программы в полноэкранном режиме под управлением операционных систем Windows NT, 2000 и ХР.
В зависимости от поставленных задач, и приложении может использоваться один из трех указанных способов вывода данных на экран. Если во главу угла ставится скорость вывода на экран, то нужно воспользоваться прямым выводом в видеопамять. В остальных случаях следует предпочесть функции BIOS. Функциями DOS стоит пользоваться только тогда, когда выходной поток данных может быть перенаправлен на другое устройство или когда экран совместно используется несколькими программами. Для вывода данных на экран в функциях DOS используются функции BIOS, а в функциях BIOS - прямой доступ к видеопамяти.
Видеоадаптер компьютера может работать в двух режимах: текстовом и графическом. Во время начальной загрузки MS DOS видеоадаптер переводится в текстовый режим работы и устанавливается видеорежим номер 3 (цветной текстовый режим, 25 строк и 80 столбцов). В текстовом режиме строки нумеруются с нуля сверху вниз экрана. Высота каждой строки определяет размер отображаемых на экране символов и зависит от текущего используемого шрифта. Столбцы экрана нумеруются с нуля слева направо. Ширина каждого столбца, как и высота строки, также определяет размер отображаемых на экране символов и также зависит от текущего используемого шрифта.
В текстовом режиме весь доступный объем видеопамяти делится на отдельные видеостраницы, в каждой из которых может храниться содержимое полного экрана. Таким образом, появляется возможность во время отображения одной страницы выводить данные в другую скрытую видеостраницу, а затем быстро переключить содержимое экрана. В настоящее время в основном используются программы с графическим интерфейсом, поэтому текстовые видеостраницы утратили свою значимость. По умолчанию используется нулевая видеостраница.
Атрибуты. Каждому символу, отображаемому на экране, назначается специальный байт атрибутов, который определяет его цвет, а также цвет расположенного за ним фона. Каждой позиции экрана соответствует один символ и один атрибут цвета. Значение атрибута хранится и отдельном байте, который в видеопамяти расположен сразу же за байтом ASCII-кода символа. На рис. 4.1 показано расположение в видеопамяти трех символов "ABC", а также их атрибутов.
Рисунок 4.1. Расположение символов и атрибутов в видеопамяти
Мигание. В текстовом режиме символы могут мигать на экране. Это делается на аппаратном уровне средствами видеоконтроллера за счет периодического обмена цветов переднего плана и фона с фиксированной частотой. По умолчанию, во время начальной загрузки ПК в режиме MS DOS режим мигания активизирован. Режим мигания отключен но умолчанию при вызове окна командной строки или окна отладчика DEBUG (эмуляции MS DOS) в системе Windows. Однако его можно активизировать, вызвав соответствующую функцию BIOS.
Цвет. Цвета на экранах видеодисплеев формируются за счет комбинации четырех элементов: три цветовых компонента - красный, зеленый и синий плюс компонент интенсивности, или яркости. В текстовых и графических режимах, обеспечивающих 16 цветов, четыре компонента цвета и яркости объединяются 16 различными способами, которые и кодируют любой из 16 цветов. Кодировки цветов приведены в табл. 4.6. Для задания цвета символа могут использоваться все коды цветов 0..15. Для задания цвета фона используются коды 0..7, если включен режим мерцания. В текстовых режимах цвет основного изображения и цвет заднего фона для каждого знака задаются двумя 4-битовыми полями, размещаемыми в одном атрибутном байте (табл. 4.7).
Установка в 1 бита с номером 7 приводит к мерцающему изображению символа, если включен режим мерцания. Атрибуты основного изображения и фона, вместе взятые, описывают все пикселы знака: все пикселы основного изображения выводятся на экран в соответствии с атрибутом основного изображения знака, а все пикселы заднего фона соответствуют атрибуту заднего фона.
Таблица 4.6 - Кодировки цветов в 16-цветных режимах
Бит яркости |
Бит R |
Бит G |
Бит B |
Десятичный (16-ричный) эквивалент |
Цвет |
0 |
0 |
0 |
0 |
0 (0h) |
черный |
0 |
0 |
0 |
1 |
1 (1h) |
синий |
0 |
0 |
1 |
0 |
2 (2h) |
зеленый |
0 |
0 |
1 |
1 |
3 (3h) |
циан (сине-зеленый) |
0 |
1 |
0 |
0 |
4 (4h) |
красный |
0 |
1 |
0 |
1 |
5 (5h) |
лиловый |
0 |
1 |
1 |
0 |
6 (6h) |
коричневый |
0 |
1 |
1 |
1 |
7 (7h) |
светло-серый |
1 |
0 |
0 |
0 |
8 (8h) |
темно-серый |
1 |
0 |
0 |
1 |
9 (9h) |
светло-синий |
1 |
0 |
1 |
0 |
10 (Ah) |
светло-зеленый |
1 |
0 |
1 |
1 |
11 (Bh) |
светлый циан |
1 |
1 |
0 |
0 |
12 (Ch) |
светло-красный |
1 |
1 |
0 |
1 |
13 (Dh) |
светло-лиловый |
1 |
1 |
1 |
0 |
14 (Eh) |
желтый |
1 |
1 |
1 |
1 |
15 (Fh) |
ярко-белый |
Таблица 4.7 - Кодирование байта атрибутов цвета
Бит |
Назначение |
7 |
мерцание знака основного изображения/компонент яркости фона |
6 |
компонент R цвета заднего фона |
5 |
компонент G цвета заднего фона |
4 |
компонент B цвета заднего фона |
3 |
компонент яркости основного изображения |
2 |
компонент R основного изображения |
1 |
компонент G основного изображения |
0 |
компонент B основного изображения |
Видеобуфер. При написании резидентных программ предназначенный для отображения на экране текст следует непосредственно заносить в видеопамять. Стандартный видеобуфер для видеосистем EGA и VGA имеет начальный физический адрес A0000h и конечный адрес BFFFFh и имеет размер 256 Кбайт. В текстовых режимах данные в буфере, начиная с начального адреса, соответствуют отображаемым символам для верхней строки экрана с левого угла. При этом экран представляется одной большой строкой. В текстовом режиме в видеобуфере для экрана отводится 4000 байт и на каждую из 2000 знаковых позиций экрана (25 строк по 80 символов) приходится 2 байта. Первый байт содержит код ASCII выводимого символа. Аппаратура видеоконтроллера преобразует номер кода ASCII в матрицу точек связанного с ним символа и посылает изображение этой матрицы на экран дисплея. Второй байт есть байт цветовых атрибутов выводимого символа. В цветных системах байт атрибутов устанавливает основной и фоновый цвет символа. Под управлением DOS пользовательская программа может непосредственно писать данные в видеобуфер, что значительно повышает скорость вывода на экран.
2.3. Службы (функции) прерывания 10h для текстового режима
Установка видеорежима служба 00h. Функция 00h позволяет установить для видеодисплея один из текстовых или графических режимов, который определяется по его номеру. Запись о текущем видеорежиме сохраняется в ячейке памяти с адресом 0040:0049h. Кодировка видеорежимов приведена в лабораторной работе № 3 при описании байта, хранящегося по этому адресу памяти. Чаще всего используется текстовый видеорежим с номером 03h. Описание функции 00h приведено в табл. 4.8.
Таблица 4.8. Параметры функции 00h прерывания 10h
Описание |
Устанавливает видеорежим |
Параметры |
AH = 00h; AL = номер видеорежима |
Что возвращается |
Ничего |
Пример |
MOV AH, 0 MOV AL, 3 ; Видеорежим 3, 80 * 25, 16 цветов INT 10 |
Примечание |
Чтобы при вызове этой функции экран не очищался, нужно установить в 1 старший бит регистра AL |
Позиционирование курсора служба 02h. Функция 02h перемещает курсор в указанную позицию (в виде номера строки и столбца) заданной видеостраницы. Описание функции приведено в табл. 4.9.
Таблица 4.9. Параметры функции 02h прерывания 10h
Описание |
Перемещает курсор в заданную позицию на экране |
Параметры |
AH = 02h; DH, DL = номер строки и столбца; DH = номер видеостраницы |
Что возвращается |
Ничего |
Пример |
MOV AH, 2 MOV DH, 10 ; Строка 10 MOV DL, 20 ; Столбец 20 MOV BH, 0 ; Видеостраница 0 INT 10 |
Запись на экран символа и его байта атрибутов служба 09h. Функция 09h выводит на экран один символ вместе с его байтом атрибутов; положение символа на экране определяется текущими координатами курсора. С помощью данной функции можно вывести на экран любой ASCII-символ, в том числе и те которые соответствуют служебным управляющим символам (коды 1 31). Вместо них на экран будут выведены специальные графические символы. Описание функции приведено в табл. 4.10.
Таблица 4.10. Параметры функции 09h прерывания 10h
Описание |
Записывает символ на экран вместе с его байтом атрибутов |
Параметры |
AH = 09h; AL = ASCII-код символа; BH = номер видеостраницы; BL = байт атрибутов; CX = счетчик повторения |
Что возвращается |
Ничего |
Пример |
MOV AH, 9 MOV AL, 41 ; ASCII-код символа A MOV BH, 0 ; Видеостраница 0 MOV BL, 71 ; Байт атрибутов синие буквы на белом фоне; MOV CX, 3 ; Счетчик повторения INT 10 |
Примечание |
После вывода символа курсор не перемещается вслед за ним; байт атрибутов будет действовать для всех следующих знакомест |
Счетчик повторения, указанный в регистре СХ, определяет, сколько раз символ будет повторен на экране. При задании значения счетчика нужно следить, чтобы повторяемые символы не выходили за пределы буфера экрана. После вывода символа на экран нужно вызвать функцию 02h прерывания 10h и скорректировать положение курсора, если предполагается выводить в эту же строку что-либо еще.
Запись символа на экран служба 0Ah. Функция 0Ah выводит символ на экран, не изменяя текущий байт атрибутов; положение символа на экране определяется текущими координатами курсора. По параметрам эта функция аналогична функции 09h, за исключением того, что не указывается байт атрибутов. Описание функции приведено в табл. 4.11.
Таблица 4.11. Параметры функции 0Ah прерывания 10h
Описание |
Записывает символ на экран |
Параметры |
AH = 0Ah; AL = ASCII-код символа; BH = номер видеостраницы; CX = счетчик повторения |
Что возвращается |
Ничего |
Пример |
MOV AH, 0A MOV AL, 41 ; ASCII-код символа A MOV BH, 0 ; Видеостраница 0 MOV CX, 3 ; Счетчик повторения INT 10 |
Примечание |
После вывода символа курсор не перемещается вслед за ним |
Переключение между режимами мигания и управления яркостью фона - служба 1003h. Функция 10h прерывания 10h имеет несколько полезных подфункций. Одна из них имеет номер 03h и управляет процессом переключения видеоадаптера между режимами мигания и управления яркостью фона, определяемой значением старшего бита байта атрибутов. Описание параметров этой подфункции приведено в табл. 4.12.
Таблица 4.12. Параметры функции 1003h прерывания 10h
Описание |
Переключает видеоадаптер между режимами мигания и управления яркостью |
Параметры |
AH = 1003h; BL = выбор режима: 0 управление яркостью, 1 - мигание |
Что возвращается |
Ничего |
Пример |
MOV AX, 1003 MOV BL, 1 ; Включить режим мигания |
Примечание |
Режим мигания в системе Windows работает только в полноэкранном режиме |
Определить параметры текущего видеорежима - служба 0Fh. Функция 0Fh предназначена для определения параметров текущего видеорежима, к которым относятся его номер, количество столбцов на экране (знакомест в строке) и номер активной видеостраницы. Описание функции приведено в табл. 4.13.
Таблица 4.13. Параметры функции 0Fh прерывания 10h
Описание |
Возвращает параметры текущего видеорежима |
Параметры |
AH = 0Fh |
Что возвращается |
AL = номер текущего видеорежима; AH = число столбцов; BH = номер активной видеостраницы |
Пример |
MOV AH, 0F INT 10 |
Примечание |
Можно использовать как в текстовом, так и в графическом режимах |
Запись о текущем видеорежиме сохраняется в ячейке памяти с адресом 0040:0049h. Кодировка видеорежимов приведена в лабораторной работе № 3 при описании байта, хранящегося по этому адресу памяти.
Вывести строку на экран в режиме эмуляции телетайпа - служба 13h. Функция 13h позволяет вывести текстовую строку на экран с указанной в виде номера строки и столбца позиции. В строке, кроме символов, могут быть указаны и байты атрибутов. Описание параметров этой функции приведено в табл. 4.14.
Таблица 4.14. Параметры функции 13h прерывания 10h
Описание |
Выводит строку на экран в режиме эмуляции телетайпа |
Параметры |
AH = 13h; AL = режим записи (см. Примечание); BH = номер активной видеостраницы; BL = байт атрибутов (если AL = 00h или 01h) CX = длина строки (счетчик символов); DH, DL = номер строки и столбца; ES:BP = адрес строки в форме сегмент:смещение |
Что возвращается |
Ничего |
Пример |
Занести в память по адресу ES:BP последовательность 8 байтов A, 1Fh, B, 1Ch, C, 1Bh, D, 1Ch MOV AH, 13 MOV AL, 2 ; Режим записи MOV BH, 0 ; Видеостраница 0 MOV CX, 4 ; Длина строки MOV DH, 10 ; Начальная строка MOV DL, 20 ; Начальный столбец INT 10 |
Примечание |
В регистре AL можно задать следующие режимы записи:
|
3. Выполнение работы
Указание: все программы должны располагаться в памяти последовательно друг за другом, чтобы можно было запускать неоднократно любую из них. Сохраняйте программы в файле, чтобы их не потерять.
3.1. Составить программу для определения кодов специальных клавиш и комбинаций клавиш. Определить коды специальных клавиш и комбинаций клавиш по указанному преподавателем варианту:
вариант 1: <F1>...<F5>, <Alt+A>...<Alt+N>;
вариант 2: <F6>...<F10>, <Alt+O>...<Alt+Z>;
вариант 3: стрелки управления курсором, <Ctrl+F1>...<Ctrl+F12;
вариант 4: <Esc>, <Enter>, <Tab>, <Ctrl+A>...<Ctrl+N;
вариант 5: стрелки управления курсором, <Alt+F1>...<Alt+F12>;
вариант 6: <Delete>, <End>, <PageDown>, Shift+F1>...<Shift+F12>;
вариант 7: <Insert>, <Home>, <PageUp>, <Ctrl+O>...<Ctrl+Z>.
3.2. Составить программу для получения флагов состояния клавиатуры. Получить флаги состояния клавиатуры при включенных и выключенных режимах <Num Lock>, <Scroll Lock>, <Caps Lock>, <Insert>.
3.3. Получить параметры текущего видеорежима.
3.4. Установить видеорежим с номером 00h. Перейти в полноэкранный режим. Выйти из полноэкранного режима. Восстановить исходный видеорежим.
3.5. Составить программу для позиционирования курсора. Установить курсор в середину окна.
3.6. Составить программу для вывода произвольного символа в середину окна с 3-кратным повторением без изменения байта атрибутов. Проверить работу программы.
3.7. Составить программу для вывода двух произвольных символов в середину окна, каждого с 2-кратным повторением с изменением байта атрибутов. Цвет символа и цвет фона выбрать произвольно. Для одного из символов бит яркости фона (мигания) должен быть установлен, для другого сброшен. Выполнить программу. Убедиться в отличиях изображений символов.
3.8. Произвести включение режима мигания, включить полноэкранный режим.
3.9. Повторить п. 3.8 при включенном режиме мигания.
3.10. Составить программу для вывода в середину окна произвольной строки символов в режиме телетайпа. Каждый символ должен имеет собственный байт атрибутов. Проверить работу программы при включенном и выключенном режиме мигания.
4. Требования к отчету
Отчет по лабораторной работе должен содержать:
- подробное описание выполнения всех пунктов задания;
- тексты программ;
- распечатки экрана.
5. Контрольные вопросы
- Где в памяти компьютера хранятся коды нажатых клавиш, которые ожидают обработки прикладными программами?
- Какие действия выполняет процедура обработки прерывания 09h?
- С помощью какой из функций прерывания 16h можно поместить код нужной клавиши в буфер клавиатуры?
- Какая их функций прерывания 16h позволяет извлечь из буфера клавиатуры код очередной хранящейся там клавиши?
- Какая их функций прерывания 16h позволяет проверить состояние буфера клавиатуры и вернуть скан-код и ASCII-код очередной хранящейся там клавиши?
- Какая их функций прерывания 16h возвращает значение флагов состояния клавиатуры?
- Назовите три возможных способа вывода текстовой информации на экран монитора.
- Какой из способов вывода информации на экран самый быстрый?
- Как запустить программу в полноэкранном режиме?
- Какой видеорежмм устанавливается по умолчанию при загрузке компьютера в режиме MS DOS?
- Какая информация нужна для отображения одного символа на экране?
- Как на экране создается пиксель произвольного цвета?
- Опишите формат байта атрибутов и покажите, какие из его битов определяют цвет символов, а какие цвет фона.
- С помощью какой функции прерывания 10h можно переместить курсор по экрану?
- С помощью какой функции прерывания 10h можно вывести на экран в текущую позицию курсора символ вместе с его атрибутом?
A
n
nn
B
nn
C
Атрибут
Символ