2.3.5.  Специальные команды

Специальные команды используются главным образом для организации прерывании.

Прерыванием называется переход на подпрограмму по сигналу внешнего устройства (датчика).

После выполнения начальной установки микропроцессора Intel 8080, он будет игнорировать все запросы на прерывания, поступа­ющие от внешних устройств. Перевести его в состояние, при кото­ром возможны прерывания программы, можно только программно ко­мандой разрешения прерываний EIEnable 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