Команды управления прерываниями
Работая под управлением программы, процессор является активным элементом в структуре микро-ЭВМ, инициатором выполнения всех операций, всех управляющих действий по отношении к внешним устройствам, предусмотренных выполняемой программой. Но для эффективного управления множеством одновременно работающих устройств, недостаточно активности только процессора. Поэтому в процессоре предусмотрен механизм прерываний процессора. Он предполагает возможность внешнему устройству в нужный ему момент прервать выполнение процессором его текущей программы и отправить процессор на, оформленные в виде подпрограммы, действия по обслуживанию внешнего устройства – инициатора прерывания. А с завершением подпрограммы обслуживания прерывания, предполагается успешный возврат на прежнее место прерванной программы.
В составе механизма прерываний есть программно управляемый триггер разрешения прерывания, способный блокировать реакцию на прерывания или наоборот разрешать прерывания. Команды управления прерываниями производят либо сброс триггера, либо его установку.
Команда EI обеспечивает установку триггера разрешения прерываний и возможность прерывать процессор запросами внешних устройств. Команда DI обеспечивает обратное действие – сброс триггера разрешения прерываний и блокирование реакций процессора на запросы от внешних устройств.
Команда перевода процессора в состояние останова
Основное состояние нормально работающего процессора – состояние выполнения программы. Вместе с тем, часто по условиям алгоритма управления бывает необходимо остановить процессор и включать его в работу только в те моменты, когда это необходимо для обслуживания прерываний от внешних устройств. Это состояние процессора так и называется – останов. Переход в состояние останова обеспечивается однобайтной командой программы – HLT. Процессор прочитает эту команду, дешифрирует её, и поскольку команда однобайтная, инкрементирует свой счётчик команд: (PC)(PC)+1. Затем начнётся фаза выполнения команды, особенность которой состоит в том, что после неё очередная команда выбираться из памяти уже не будет. Вместо этого процессор выполнит машинный цикл останов: перевод линий адреса и линий данных шины в высокоимпедансное состояние и выдачу сигнала WAIT. И далее перейдёт в состояние останова.
При этом предполагается, что далее процессор будет работать по запросам прерываний внешних устройств. С приходом запроса прерывания, процессор выйдет из состояния останова, выполнит машинный цикл прерывания при останове, в рамках которого должен будет прочитать от инициатора прерывания команду вызова подпрограммы. Прочитав эту команду процессор станет её выполнять: отправит в стек текущий счётчик команд и уйдёт на выполнение подпрограммы обслуживания прерывания. Корректно возвратившись из этой подпрограммы процессор должен прийти к команде следующей за командой HLT. То есть в состояние останова он уже не вернётся.
Биты признаков команда HLT не изменяет и требует 4 такта времени.
Команда NOP
Когда требуется, чтобы процессор сделал просто паузу между какими- то операциями, можно эффективно применять предназначенную для этого команду NOP.
Команда NOP не выполняет за один свой машинный цикл никаких программных операций кроме инкрементирования счётчика команд, затрачивая на это 4 такта.
Длительность нужной задержки может определяться количеством повторённых команд NOP.
Программирование процессора 8080
Лабораторная работа № 1.1
Учебная микро-ЭВМ УМК-80
Цель работы: ознакомиться с возможностями, архитектурной организацией, средствами Монитора учебного микропроцессорного комплекта УМК-80, а также освоить приёмы работы с УМК-80 в пошаговых режимах.