Специальные команды используются главным образом для организации прерывании.
Прерыванием называется переход на подпрограмму по сигналу внешнего устройства (датчика).
После выполнения начальной установки микропроцессора Intel 8080, он будет игнорировать все запросы на прерывания, поступающие от внешних устройств. Перевести его в состояние, при котором возможны прерывания программы, можно только программно командой разрешения прерываний EI – Enable Interruption (возможно прерывание). О переходе в такое состояние центральный процессор информирует систему посредством установки сигнала уровня логической 1 на выводе INTE (Interruption Enable) БИС центрального процессора.
При поступлении запроса на прерывание и разрешении на его выполнение состояние, при котором возможно прерывание, автоматически прекращается (сигнал INTE равен 0), но может быть восстановлено повторной подачей команды ЕI. Эту команду можно подать сразу после получения запроса на прерывание, тогда сигнал INTE будет равен 1 и, следовательно, программа обработки прерывания, в свою очередь, может быть прервана новым запросом, т.е. организовано вложение прерываний. Команда ЕI может подаваться только в конце программы обработки прерываний, и тогда вложения невозможны.
Сигнал INTE может быть переведен в логический 0, т.е. возможность прерывания снята, либо автоматически – при запросах от аппаратных средств системы, либо программно – путем подачи команды запрещения прерывания DI (Disable Interruption). Итак, в логический 0 сигнал INTE может быть переведен и аппаратно, и программно, но; в логическую 1 его можно перевести только программно.
Когда микропроцессор принимает сигнал запроса прерывания от внешнего устройства, он, прежде всего, завершает выполнение текущей команды, и в стек записывается адрес следующей команды программы; это будет адрес возврата из прерывания. После того, как все текущие данные, которые надо сохранить, будут с помощью соответствующих команд записаны в стек, устройству, пославшему запрос, направляется сигнал разрешения прерывания INTA (Interrupt Acknowledge – добро на прерывание). Сигнал INTA активен при нулевом уровне и добавляется к четырем сигналам управления, передаваемым по шине управления: запись-чтение запоминающего устройства (ЗПЗУ и ЧТЗУ) и запись-чтение устройства ввода-вывода (ЗПВВ и ЧТВВ)
Внешнее устройство, пославшее запрос, через определенное время должно обеспечить ввод в микропроцессор адреса или вектора, определяющего точку входа в программу обработки данного прерывания. Для этого устройство выдает на шину данных команду RST (Restart – повторный старт). Восемь бит команды рестарта имеют следующий вид:
RST 11 ААА 111,
где ААА – вектор прерывания, т.е. три бита, с помощью которых внешнее устройство указывает, какая из восьми программ прерывания должна выполняться в данном случае.
Физически вектор прерывания ААА определяет один из восьми ареалов (областей) памяти в первых 64 словах памяти. Каждый ареал памяти имеет протяженность в восемь байт и потому задается адресами, указанными в табл. 2.14. Если программа обработки прерывания превышает 8 команд, то в ареал памяти должна быть включена команда JMP (т.е. безусловный переход к остальной части программы), которая может быть расположена в любом месте основной памяти.
Таблица 2.14