Предыдущий раздел УПРАВЛЕНИЕ УСТРОЙСТВАМИ БЕЗ ПРЕРЫВАНИЙ Следующая глава

20.4. Лабораторная работа 18

Требуется реализовать программно нерезидентный драйвер экрана с видеоадаптером CGA, логическая схема которого приведена на рис.73. Кроме того, требуется разработать прикладную программу, выполняющую вывод на экран ваших фамилии и имени, и, возможно, другой информации (по вашему усмотрению), используя для вывода на экран ваш драйвер. Цвет символов, выводимых на экран, а также цвет фона должны быть выбраны из табл.8 в зависимости от номера вашего варианта.

 

Т а б л и ц а 8

 

 

Результат выполнения работы оформляется в виде двух файлов с расширением asm (исходные тексты прикладной программы и драйвера) и одного файла с расширением com (загрузочный модуль прикладной программы и драйвера.

Рекомендуемый план отладки

Рекомендуется выполнять отладку драйвера экрана не целиком, а постепенно наращивая его функции в соответствии со следующим планом.

Шаг 1. Прикладная программа выполняет вызов процедуры инициализации, за которым следуют ожидание нажатия клавиши и возврат в DOS. Процедура инициализации выполняет только очистку экрана заданным цветом фона.

Шаг 2. Отличается от шага 1 только тем, что процедура инициализации выполняет не только очистку экрана, но и первоначальную установку курсора.

Шаг 3. Прикладная программа выполняет вызов процедуры инициализации, за которым следуют ожидание нажатия клавиши. Далее она в цикле вызывает процедуру вывода символа, передавая ей каждый раз на вход код следующего символа из символьной строки, заданной в прикладной программе. Данная строка завершается каким-то особым байтом, например 24h. После завершения вывода прикладная программа ожидает нажатия клавиши и выполняет возврат в DOS.

Шаг 4. Отличается от шага 3 тем, что выводимая на экран символьная строка содержит кроме других символов «возврат каретки» и «перевод строки».

Примечание 1. При выполнении отладки обычно требуется уметь остановить выполнение программы в заданной точке. В данной работе при выполнении прикладной программы подобная остановка используется дважды. Во-первых, после завершения процедуры инициализации, так как требуется время на перемещение курсора. Во-вторых, программа приостанавливается перед возвратом в DOS.  В противном случае сразу же после возвращения управления из прикладной программы в DOS последняя заменит на экране выходные данные программы своими данными.

Для выполнения остановки программы можно воспользоваться системным вызовом BIOS «ожидание ввода с клавиатуры” – “int 16h” (функция 0).

Примечание 2. Обе программы не должны содержать системных вызовов DOS и BIOS, выполняющих вывод на экран.

Примечание 3. При отладке подпрограммы, выполняющей работу с курсором, надо помнить, что подпрограммы DOS и BIOS, выполняющие вывод на экран, будут игнорировать вашу установку курсора и вернут его в то положение, которое он занимал до начала выполнения вашей программы (соответствующее 2-байтовое значение хранится в области данных BIOS). Например, если вы пользуетесь отладчиком, то во время работы курсор перестает “слушаться” вашу программу и не двигается с места.

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

 


Предыдущий раздел В начало Следующая глава