Предыдущий раздел | УПРАВЛЕНИЕ УСТРОЙСТВАМИ БЕЗ ПРЕРЫВАНИЙ | Следующая глава |
Требуется реализовать программно нерезидентный драйвер экрана с видеоадаптером 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, то в начале этой процедуры обязательно требуется сохранить, а в конце ее восстановить прежнее содержимое этого регистра. Иначе в вызывающей программе будет нарушена адресация данных.
Предыдущий раздел | В начало | Следующая глава |