Здавалка
Главная | Обратная связь

Краткие теоретические сведения



Базовая система ввода - вывода включает в себя набор подпрограмм низкого уровня, предназначенных в основном для работы с внешними устройствами ЭВМ. Интерфейс с 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 Все права принадлежат авторам размещенных материалов.