В процессе подготовки к выполнению работы написать и отладить следующие процедуры:
· вывода на экран строки символов прямым отображением в память, так как при использовании функций DOS или BIOS аппаратные прерывания, возникающие в случайные моменты времени, могут привести к разрушению операционной системы [13],
· преобразования байта информации, хранящегося в ОЗУ, в десятичный эквивалент в символьном виде.
Выполните следующие эксперименты по перехвату прерываний:
· Перехватите прерывание int 8h, предусмотрев в программе обработки передачу управления исходному обработчику. Для иллюстрации результата выведите в левом верхнем углу дисплея звездочку прямым отображением в память.
· Повторите эксперимент без передачи управления. Не забудьте снять заявку в регистре ISR контроллера прерываний.
· Замените в обработчике прямое отображение в видеопамять на процедуру инкрементации счетчика прерываний от таймера так, чтобы по истечении одной секунды происходил вызов пользовательского прерывания int 060h. Перед возвратом из обработчика int 8 передайте управление исходному обработчику, чтобы не сбивать системные часы. Для иллюстрации результата в обработчик int 60h включите вывод на экран символа.
· Убедившись, что перехватывание аппаратного прерывания и вновь созданное собственное прерывание происходят успешно, замените процедуру вывода в int 60h на подсчет относительного времени с момента начала работы программы.
· Напишите программу вывода на экран времени работы вашей программы. Для этого в основную программу включите цикл, ограничивающий время работы. Функции коррекции времени удобнее выполнять в пользовательском прерывании int 60h, а функции преобразования в символьный вид и вывод на экран — в теле основной программы. Окончание цикла можно установить по значению относительного времени работы программы. Возможный алгоритм решения этой задачи приведен на рис. 3.9, 3.10
Рис. 3.9. Рекомендуемый алгоритм основной программы вывода времени работы программы
Рис. 3.10. Рекомендуемый алгоритм счета времени
· Используя свою программу, замаскируйте доступ к клавиатуре на 1 мин. Попробуйте "перезапустить" компьютер с "теплого старта".
· В основной программе замените функцию 25h прерывания DOS 21h установки вектора прерывания. Позаботьтесь о том, чтобы во время смены вектора аппаратного прерывания не произошло другое аппаратное прерывание.
· Исключите цикл, ограничивающий время работы вашей программы. Реализуйте возможность выхода из программы по "горячим клавишам". Для этого перехватите аппаратное прерывание от клавиатуры.
· Преобразуйте программу так, чтобы на экран выводились часы суточного времени. Для этого в начале основной программы примените вызов функции 2CH прерывания DOS 21h.
· Выполните индивидуальное задание, полученное у преподавателя.
Обмен с ПУ может осуществляться двумя способами: по прерываниям и по прямому доступу к памяти (ПДП). Как правило, ПДП
применяется для поблочной передачи информации между ОЗУ и ВЗУ.
Устройство, принимающее на себя функции управления процессом обмена - контроллер ПДП. Прямой доступ позволяет на время обмена разгрузить процессор, освободив его от управления передачей, и существенно повысить как скорость обмена, так и быстродействие процесса в целом.
ПУ, отличные от ВЗУ побайтно обмениваются либо с процессором, либо с памятью (ОЗУ). Очевидно, что целесообразно применять единый механизм обмена и в том, и в другом случае во избежание излишних аппаратных затрат и для унификации программного обеспечения. Побайтный обмен позволяет обеспечить гибкость при распределении ресурсов системы с целью повышения быстродействия
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.