Краткие теоретические сведения
Базовая система ввода - вывода включает в себя набор подпрограмм низкого уровня, предназначенных в основном для работы с внешними устройствами ЭВМ. Интерфейс с BIOS организован через несколько векторов прерывания. В лабораторной работе используются подпрограммы работы с дисплеем (вектор 10h). Номер подпрограммы (номер функции) задается в регистре АН, необходимые параметры - в регистрах ВХ, СХ, DX. Все подпрограммы сохраняют регистры, кроме SI, DI и регистров, используемых для передачи параметров. Основные функции BIOS для работы с дисплеем: 1. Позиционирование курсора на экране в заданную позицию. Входные параметры - АН = 2 (номер функции) ВН = 0 (номер страницы) DH = номер строки (0...24) DL = номер столбца (0...79) Выходные параметры: нет 2. Чтение текущей позиции курсора Входные параметры: АН = 3 ВН = 0 Выходные параметры: DH = номер строки DL = номер столбца
3. Чтение с экрана символа и его атрибутов в текущей позиции курсора Входные параметры: АН = 8 ВН = 0 Выходные параметры: AL = код символа АН = атрибуты символа
4. Вывод символа с заданными атрибутами в позиции курсора. Входные параметры: АН = 9 ВН = 0 BL = атрибуты символа AL = код символа СХ = счетчик символов (количество) Выходные параметры: нет
5. Вывод символа в позиции курсора со старыми атрибутами Входные параметры: АН = 10 ВН = 0 AL = код символа СХ = счетчик (количество символов) Выходные параметры: нет
6. Вывод символа и перемещение курсора в .следующую позицию ("Телетайп") Входные параметры: АН = 14 ВН =0 AL = код символа BL = атрибуты символа Выходные параметры: нет Байт атрибутов имеет следующую структуру: биты 0-3 - цвет символа (0-Fh) биты 4-6 - цвет фона (0-7h) бит 7 - признак мигания (0/1)
3. Методические указания В лабораторной работе требуется написать ассемблерную процедуру, вызываемую из СИ-программы и выполняющую операции с дисплеем. Ввод исходных данных и вывод результата выполняются в СИ-программе. Обратите внимание, что при пошаговой отладке программы возможна ее неправильная работа, поскольку содержимое экрана меняется после каждого шага. Поэтому окончательную проверку правильности работы программы следует проводить в режиме нормального выполнения (Run). Необходимо предусмотреть в головной программе заполнение экрана произвольной информацией (например, вывод 24 раза строки текста длиной 80 символов). Для возможности совместной пошаговой отладки оба программных модуля должны быть включены в один файл проекта (см. описание лабораторной работы № 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. Написать функцию, которая выводит на экран в заданном месте строку символов с разными атрибутами. Прототип функции: void var4(char *str, char * attr, int row, int col); str - строка символов для вывода attr - массив атрибутов символов row - номер ряда col - номер колонки Вариант 5. Написать функцию, которая выводит в заданном месте экрана справа налево строку с заданными атрибутами. Прототип функции:
void yar5(char *str, int row, int col, Int attr); str - строка для вывода row - номер ряда col - номер колонки attr - атрибуты для вывода Вариант 6. Написать функцию для считывания с экрана вертикального столбца, начиная с заданной точки. Прототип функции: void var6(char *str, int row. int col, int len); str - -строка, куда нужно поместить считанные данные row - номер ряда col - номер колонки len - количество считываемых символов Вопросы для самоконтроля 1. Команды работы с прерываниями и их особенности 2. Классификация прерываний 3. Особенности обработки аппаратных прерываний 4. Использование прерываний для обращения к BIOS ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|