Целью этой лабораторной работы является изучение способов организации взаимодействия процессора и внешних устройств (ВУ) в составе ЭВМ. Ранее отмечалось, что связь процессора и ВУ может осуществляться в синхронном или асинхронном режиме. Синхронный режим используется для ВУ, всегда готовых к обмену. В нашей модели такими ВУ являются дисплей и тоногенератор - процессор может обращаться к этим ВУ, не анализируя их состояние (правда дисплей блокирует прием данных после ввода 128 символов, формируя флаг ошибки). Асинхронный обмен предполагает анализ процессором состояния ВУ, которое определяет готовность ВУ выдать или принять данные или факт осуществления некоторого события, контролируемого системой. К таким устройствам в нашей модели можно отнести клавиатуру и блок таймеров. Анализ состояния ВУ может осуществляться процессором двумя способами: - в программно-управляемом режиме - в режиме прерывания В первом случае предполагается программное обращение процессора к регистру состояния ВУ с последующим анализом значения соответствующего разряда слова состояния. Такое обращение следует предусмотреть в программе с некоторой периодичностью, независимо от фактического наступления контролируемого события (например, нажатие клавиши). Во втором случае при возникновении контролируемого события ВУ формирует процессору запрос на прерывание программы, по которому процессор и осуществляет связь с ВУ. ## Задание Свой вариант задания требуется выполнить 2 способами - сначала в режиме программного контроля, далее модифицировать программу таким образом, чтобы события обрабатывались в режиме прерывания программы. Поскольку "фоновая" (основная) задача для этого случая в заданиях отсутствует, роль ее может сыграть "пустой цикл": ```asm M: NOP NOP JMP M ``` | Вариант | Задание | Используемые ВУ | Пояснения | | ------- | ------------------------------------------------------------------------ | ------------------ | -------------------------------------------------------------------------------------------------------- | | 12 | Определить промежуток времени между 2 последовательными нажатиями клавиш | Клавиатура, таймер | Результат выдается на `OR`. Учитывая инерционность модели, нажатия не следует производить слишком быстро |