Базовая система ввода - вывода включает в себя набор подпрограмм низкого уровня, предназначенных в основном для работы с внешними устройствами ЭВМ. Интерфейс с BIOS организован через несколько векторов прерывания. В лабораторной работе используются подпрограммы работы с дисплеем (вектор 10h).
Номер подпрограммы (номер функции) задается в регистре АН, необходимые параметры - в регистрах ВХ, СХ, DX. Все подпрограммы сохраняют регистры, кроме SI, DI и регистров, используемых для передачи параметров.
Основные функции BIOS для работы с дисплеем:
1. Позиционирование курсора на экране в заданную позицию.
Входные параметры - АН = 2 (номер функции)
ВН = 0 (номер страницы)
DH = номер строки (0...24)
DL = номер столбца (0...79)
Выходные параметры: нет
2. Чтение текущей позиции курсора
Входные параметры: АН = 3
ВН = 0
Выходные параметры: DH = номер строки
DL = номер столбца
3. Чтение с экрана символа и его атрибутов в текущей позиции курсора
Входные параметры: АН = 8
ВН = О
Выходные параметры: AL = код символа
АН = атрибуты символа
4. Вывод символа с заданными атрибутами в позиции курсора.
Входные параметры: АН = 9
ВН = О
BL = атрибуты символа
AL = код символа
СХ = счетчик символов (количество)
Выходные параметры: нет
5. Вывод символа в позиции курсора со старыми атрибутами
Входные параметры: АН = 10
ВН = О
AL = код символа
СХ = счетчик (количество символов)
Выходные параметры: нет
6. Вывод символа и перемещение курсора в .следующую позицию ("Телетайп")
Входные параметры: АН = 14
ВН =0
AL = код символа
BL = атрибуты символа
Выходные параметры: нет
Байт атрибутов имеет следующую структуру:
биты 0-3 - цвет символа (0-Fh)
биты 4-6 - цвет фона (0-7h)
бит 7 - признак мигания (0/1)
3. Методические указания
В лабораторной работе требуется написать ассемблерную процедуру, вызываемую из СИ-программы и выполняющую операции с дисплеем. Ввод исходных данных и вывод результата выполняются в СИ-программе. Обратите внимание, что при пошаговой отладке программы возможна ее неправильная работа, поскольку содержимое экрана меняется после каждого шага. Поэтому окончательную проверку правильности работы программы следует проводить в режиме нормального выполнения (Run).
Необходимо предусмотреть в головной программе заполнение экрана произвольной информацией (например, вывод 24 раза строки текста длиной 80 символов).
Для возможности совместной пошаговой отладки оба программных модуля должны быть включены в один файл проекта (см. описание лабораторной работы N 2).
4. Порядок выполнения работы
1. Написать головную программу на Си для вызова функции обработки строк, содержащую:
- прототип ассемблерной функции
- ввод исходных данных с подсказками (если требуется)
- заполнение экрана символьной информацией
- вызов ассемблерной функции
- вывод результата работы функции
2. Написать ассемблерную функцию, выполняющую операции в соответствии с вариантами, приведенными ниже.
3. Выполнить компиляцию и компоновку программы и произвести ее пошаговую отладку и проверку работы в реальном времени.
Задания к лабораторной работе.
Вариант 1.
Написать функцию для вывода строки текста с заданными атрибутами сверху вниз с заданной позиции на экране. Прототип функции:
void varl(char *str, int row, iht col, int attr);
str - строка для вывода
row - номер ряда
col - номер колонки
attr - байт атрибутов
Вариант 2.
Написать функцию для копирования с экрана строки текста, начиная с заданной позиции. Прототип функции:
void var2(char *str, int row, int col, int len);
str - строка, куда нужно поместить считанные данные
row – номер ряда
col - номер колонки
len - количество считываемых символов
Вариант 3.
Написать функцию, которая меняет на экране атрибуты строки символов в заданном месте экрана. Прототип функции:
void var3(int row, int col, int len, int attr);
row - номер ряда
col - номер колонки
len - длина строки
attr - атрибуты строки
Вариант 4.
Написать функцию, которая выводит на экран в заданном месте строку символов с разными атрибутами. Прототип функции:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.