
Микропроцессоры Токхайм / 8.9. КОМАНДЫ СТЕКА, ВВ и УПРАВЛЕНИЯ МП INTEL 8080-8085
.doc8.9. КОМАНДЫ СТЕКА, ВВ и УПРАВЛЕНИЯ МП INTEL 8080/8085
Рассмотрим краткое описание этих команд. Они выполняют операции помещения в стек и извлечения из него, ввода и вывода данных, обмена данными, подтверждения и неподтверждения прерываний, содержат команды отсутствия операций и останова, универсального считывания и установления маски прерывания.
Как и ранее, группа команд стека, ВВ и машинного управления показана в собственном формате фирмы Intel.
PUSH rp (Push). Поместить
в стек. ((SP)—l)-«-(rh); ((SP)—2)<-(r1); ((SP)<-(SP)—2).
Содержимое старшего регистра пары
гр передается в память, адрес которой
меньше на 1 содержимого регистра SP.
Содержимое младшего регистра пары
rр передается в память, адрес которой
меньше на 2 содержимого регистра SP.
Содержимое регистра SP декрементируется
дважды. Пара регистров rp=SP не оговаривается.
Циклов —3; периодов Г — 12 (8085); адресация — косвенная регистровая; индикаторы — не определены.
PUSH PSW (Push processor status word). Поместить в стек слово состояния процессора. ((SP)—1)<-(А); ((SP)-2)0 <-(CY); ((SP)-2)1<-X; ((SP)-2)2<-(P); ((SP) — 2)3<-X; ((SP)-2)4<-(AC); ((SP)-2)5<-Х; ((SP)-2)6<-(Z); ((SP)-2)7<-(S); (SP)<-(SP)-2. X не оговаривается. Содержимое регистра А передается в память, адрес которой меньше на 1 содержимого регистра SP. Содержимое индикаторов составляет PSW, и это слово передается побитно (см. индексы в записи операций) в память, адрес которой меньше на 2 содержимого регистра SP, которое декрементируется дважды ((SP)—2).
Циклов —3; периодов Т— 12 (8085), 11 (8080); адресация— косвенная регистровая; индикаторы — никаких. Слово индикаторов
X не оговаривается.
POP rp (Pop). Извлечь из стека. (rl)<-((SP)); (rh)<-<-((SP)+1); (SP)<-(SP)+2. Содержимое памяти, адрес которой определяется регистром SP, передается в младший регистр пары rр. Содержимое памяти, адрес которой больше на 1 содержимого регистра SP, передается в старший регистр пары rр. Содержимое регистра инкрементируется дважды. Пара rp=SP не оговаривается.
Циклов — 3; периодов Т—10; адресация — косвенная регистровая; индикаторы — никакие.
POP PSW (Pop processor status word). Извлечь из стека слово состояния процессора. (CY)<-((SP))0 ;(Р)<-<-((SP))2; (AC)<-((SP))4; (Z)<-((SP))6; (S)<-((SP))7; (A)<-((SP)+1); (SP)<-(SP)+2. Содержимое памяти, адрес которой определен содержимым регистра SP, побитно (в соответствии с индексами в записи операций) используется для восстановления индикаторов условия. Содержимое памяти, адрес которой больше на 1 содержимого SP, передается в регистр А. Содержимое SP инкрементируется дважды.
Циклов
— 3; периодов T
— 10; адресация — прямая; индикаторы
— никакие.
XTHL (Exchange stack top with H and L). Обменять вершину стека с Н и L. (L)<->((SP)); (Н)<-> ((SP) + 1). Содержимое регистра Н обменивается с содержимым памяти, адрес которой определен содержимым регистра SP. Содержимое регистра Н обменивается с содержимым памяти, адрес которой больше на 1 содержимого SP.
Циклов —5; периодов T — 16(8085), 18(8080); адресация — косвенная регистровая; индикаторы — никакие.
SPHL (Move HL to SP).
Передать HL в SP. (SP)<-<-(Н) (L). Содержимое
регистров Я и L (16 бит) передается в
регистр SP.
Циклов—1; периодов T-6 (8085), 5 (8080); адресация-регистровая; индикаторы — никакие.
IN port (Input). Ввести данные. (А)<-(данные). Данные, помещенные на 8-разрядную двунаправленную шину данных определенным портом, передаются в регистр А.
Циклов —3; периодов T—10; адресация — прямая; индикаторы—никакие.
OUT port (Output). Вывести
данные. (Данные)<-(А). Содержимое регистра
А помещается на 8-разрядную двунаправленную
шину данных для передачи в определенный
порт.
EI (Enable interrupts). Разрешение прерываний. Система прерываний разрешается тотчас после выполнения следующей команды. Прерывания не признаются во время выполнения команды EI.
Циклов—1; периодов
T— 4;индикаторы
— никакие.
Примечание. Запрещается помещать команду EI на шину в ответ на INTA, протекающую в цикле INA (8085).
DI (Disable interrupts). Запрещение прерывания. Система прерывания не разрешается сразу после выполнения команды DI. Прерывания не признаются во время выполнения команды DI.
Циклов—1; периодов
T— 4; индикаторы — никакие. Запрещено
помещать команду DI на шину в ответ на
во время цикла INA (8085).
HLT (Halt). Останов. Процессор останавливается. Регистры и индикаторы не устанавливаются (8085). Второй ALE выдается во время выполнения HLT для дестробирования информации о состоянии цикла HLT (8085).
Циклов— 1 +(8085), 1 (8080); периодов T — 5 (8085), 7 (8080); индикаторы — никакие.
NOP (No op). Нет операции. Не выполняется никакая операция. Регистры и индикаторы не устанавливаются.
Циклов —1; периодов T — 4; индикаторы — никакие.
RIM (Read interrupt mask). Читать маску прерывания (только 8085). Команда RIM загружает в аккумулятор данные, относящиеся к прерываниям и последовательным вводам. Эти данные содержат следующую информацию: состояние маски текущего прерывания для аппаратных прерываний RST5.5, 6.5 и 7.5 (1—маска запрещена); состояние индикатора текущего разрешения (1 — прерывание разрешено), за исключением случаев непосредственного
следования прерывания TRAP (см. ниже); аппаратные прерывания в ожидании (т.е. сигналы получены, но не обслуживаются) на линиях RST5.5, 6.5 и 7.5; с последовательно вводимых данных.
Непосредственно после прерывания TRAP должна быть выполнена команда RIM как часть служебной подпрограммы, если позже необходимо разыскать состояние текущего прерывания. Индикатор состояния разрешения прерывания (EI), который был до прерывания TRAP, загружается (только в этом случае) в 3-й бит аккумулятора. После прерываний RST5.5, 6.5 и 7.5 или INTR триггер индикатора прерывания отражает состояние текущего разрешения. Состояние триггера RST7.5 (всегда активизировано положительным фронтом ввода на линию RST7.5, даже когда это прерывание в предыдущем было маскировано), загружается в 6-й бит аккумулятора (17.5) (см. команду SIM).
КОП
Содержимое аккумулятора после команды RIM .
Циклов—1; периодов Т — 4; индикаторы — никакие.
SIM (Set interrupt mask).
Установить маску прерывания (только
8085). Выполнение команды SIM использует
содержимое аккумулятора (который должен
быть предварительно загружен) для
выполнения следующих действий:
программировать маски аппаратных
прерываний RST5.5, 6.5 и 7.5; сбросить защелки
для разъединения фронтом сигнала
RST7.5; загрузить защелку выхода SOD. Для
программирования маски прерываний: 1)
Установить 3-й бит аккумулятора в 1, как
и один из бит 0, 1, 2, которые не разрешают
прерывания соответственно RST5.5, 6.5 и
7.5. 2) Выполнить команду SIM. Если 3-й бит
аккумулятора 0 в момент выполнения
SIM, регистр маски прерывания не изменяется.
Если 4-й бит аккумулятора 1, защелка
RST7.5 характеризуется тем, что она
устанавливается положительным
фронтом импульса на выводе входа RST7.5
даже в случае, когда переход в подпрограмму
обслуживания заторможен маскированием.
Этот захват остается в Н-состоянии до
тех пор, пока имеется состояние сброса,
вызванное сигналом,
командой SIM с 4-м битом Н-уровня
аккумулятора или подтверждением
получения внутри процессора прерывания
RST7.5, следующим за снятием маски (командой
SIM). Сигнал
активизирует всегда 3 бит маски RST.
Если 6-й бит
аккумулятора устанавливается снова в
1, когда команда SIM выполнена, состояние
7-го бита аккумулятора загружается
в защелку SOD и поступает в распоряжение
интерфейса внешнего устройства. Защелка
SOD не устанавливается командой STM, если
6-й бит 0. SOD всегда сброшена сигналом
КОП
Циклов—1; периодов Т — 4; индикаторы — никакие.
Эта группа содержит операции помещения в стек и извлечения из стека данных. Как и в типовом МП, стек Intel 8080/8085 находится в ОЗУ. Вершина его определяется с помощью указателя стека по адресу, определяемому программистом. Все команды PUSH (поместить в стек) и POP (ИЗВЛЕЧЬ из стека) МП Intel 8080/8085 передают 2 байт данных только в одной команде. Команды PUSH PSW и POP PSW помещают в стек и
из него данные слова состояния микропроцессора, которое соответствует сочетанию регистра состояния (индикаторов) и аккумулятора МП.
Команды IN (ввести) и OUT (вывести) действуют аналогично таким же командам в типовом МП и используются с изолированными ВВ.
Операция XTHL выполняется по однобайтовой команде обмена вершины стека с содержимым пары HL. Операция SPHL выполняется по команде, которая передает содержимое пары HL в указатель стека SP. Эта команда может быть использована для установления указателя стека, определяя, следовательно, вершину стека в ОЗУ.
Команда NOP не выполняет никакой операции (как и в типовом микропроцессоре). Она бывает полезна каждый раз, когда нужна задержка в цикле синхронизации.
Команда HLT останавливает МП. Счетчик команд содержит адрес следующей команды. Остальные регистры и индикаторы не изменяются. Войдя в это состояние, МП не может быть запущен кроме как внешним событием, обычно прерыванием. Эта команда используется для остановки МП, когда он ожидает, чтобы периферия завершила свою задачу и прервала действия МП.
Запуск МП может быть вызван одним из двух следующих способов: командой в памяти программы или внешним прерыванием. Аппаратные прерывания МП Intel 8080/8085 управляются двумя командами: разрешением прерывания (EI) и запрещением прерывания (DI). Когда команда EI выполнена, она устанавливает триггер разрешения прерывания внутри МП. Если индикатор установлен в 1 (или разрешен), МП Intel 8085 согласится и ответит одному из пяти возможных аппаратных прерываний.
Команда DI (запретить прерывание) сбрасывает в 0 индикатор разрешения прерывания (триггер), после этого МП игнорирует все прерывания, за исключением прерывания по входу TRAP, которое не может быть запрещено никакой из имеющихся в программе команд.
Команда EI часто
используется как один из этапов пуска.
При подаче напряжения МП пытается
выполнить команды, расположенные
по неопределенным адресам. Тогда
используется обычно вход,
который загружает счетчик команды
адресом 0000Н. Вход
осуществляет
также сброс в 0 индикатора разрешения
прерывания, в результате чего запрещаются
все прерывания, за исключением TRAP.
Одной из первых после этого сброса
будет команда разрешения прерываний
(EI).
Команды часто квалифицируются на маскируемые и немаскируемые. Немаскируемое прерывание — это такое, которое система не может запретить, маскируемое прерывание может быть запрещено.
В микропроцессоре Intel 8085 прерывание TRAP рассматривается, как немаскируемое, все прочие — маскируемые.
Команды EI и DI разрешают и запрещают все прочие прерывания, взятые группой. Прерывания RST7.5, RST6.5 и RST5.5 могут быть разрешены или запрещены индивидуально. Действующий механизм, согласно которому можно разрешить или запретить прерывания избирательно, составляет маскирование прерывания. Когда прерывание маскировано, оно не разрешается МП. Если, напротив, маска снята, оно разрешается. Рассмотрим пример простого прерывания, представленного на рис. 8.29, и проследим операции МП, обращаясь к номерам в кружках.
1 _ вход RST5.5 (вывод 9) кристалла МП Intel 8085 активизирован Н-сигналом;
2 — для упрощения примера принимаются три гипотезы:
а) не активизируется прерывание приоритета TRAP; б) не активизируется или маскируется прерывание более высокого приоритета RST7.5)
3—бит маски прерывания (b0) регистра состояния прерывания проверяется. Он сброшен в 0 или немаскирован, что удовлетворяет первому условию признания прерывания RST5.5 МП.
4 — индикатор разрешения прерывания (b3) проверяется. Он установлен в 1, что значит — все прерывания разрешены.
5—прерывание RST5.5 признается МП. Процессор заканчивает выполнение текущей операции и помещает в стек содержимое счетчика команд.
6—кристалл МП
Intel 8085 подтверждает получение запроса
на прерывание — сигналв
направлении периферии.
7—микропроцессор переходит в память по адресу 002СН.
На рис. 8.29 МП решил проверить 2 бит регистра состояния прерывания. Сначала в ходе этапа 3: проверка бита маски RST5.5 (М5.5). Бит М5.5 был 0 или немаскирован, что означает, что МП мог признать прерывание. Затем на этапе 4 индикатор признания прерывания (IE) был проверен, в свою очередь. На рис. 8.29 индикатор IE имеет 1 (разрешен), что означает, что это прерывание может быть признано.
Некоторые биты регистра состояния прерывания могут быть изменены специальной командой (Intel 8085). Команда SIM (УСТАНОВИТЬ маску прерывания) помещает содержимое аккумулятора в регистр 1. Мы уже видели, что SIM используется также на выходе бита данных в защелке SOD (вывод последовательных данных) МП Intel 8085 (см. рис. 8.5, б).
На рис. 8.30 показано использование регистра маскирования прерывания командой SIM. Биты маски прерываний RST5.5, RST6.5 и RST7.5 могут быть установлены (маскированы) или сброшены (демаскированы), если b3 (разрешение установления маски) признан логической 1. Логическая 1 в позиции b4 сбросит в 0 триггер RST7.5. На рис. 8.30 b5 не определен. Биты b6 и b7 регистра маски прерывания объединены на последовательном выходе процессора (вывод SOD МП Intel 8085). Признавая b6 единицей, мы позволяем передачу данных b7 регистра 1 на выход 4 кристалла МП Intel 8085 (защелка SOD).
Действие команды RIM на регистр состояния прерывания показано на рис. 8.31. Команда RIM передает содержимое внутренних защелок в аккумулятор. Мы уже использовали команду RIM (см. рис. 8.5, а) для ввода последовательных данных на вывод SID МП Intel 8085 в b7 аккумулятора. Состояние других защелок, как и ввод последовательных данных, представлено в аккумуляторе.
Упражнения
8.76. См. § 8.9. Записать команды стека.
См.§ 8.9. Какие команды используются только в МП Intel 8085?
См. рис. 8.32. Каково содержимое (шестнадцатеричное) пары HL после выполнения команды XTHL?
См. рис. 8.32. Каково содержимое адресов стека 2080Н после выполнения команды XTHL?
См. рис. 8.31. Каким будет бит регистра состояния прерывания, установленный командой EI?
Шестнадцатеричный КОП команды HLT ______.
Эта команда ______ (устанавливает, не устанавливает)
индикаторы. Будучи остановлен, процессор может быть
пущен только таким событием, как ______ (прерывание,
команда NOP).
8.82. Команда OUT имеет ______ (прямую, регистровую) адресацию, и адрес порта находится в памяти _________
(данных, программы).
8.83. Команда RIM может быть использована для
_______ (выдачи, получения) последовательных данных
через вывод _______ (SID, SOD) МП Intel 8085. Этот бит
данных будет в ______ бите аккумулятора.
Когда маскируется такое прерывание, как RST6.5, оно _____ (разрешается, запрещается).
См. рис. 8.33. Записать все биты регистра I после выполнения команды.
См. рис. 8.33. Будут ли последовательные выходящие данные захвачены в защелке SOD МП Intel 8085?
8=87. См. рис. 8.33. Записать немаскируемые команды после команды SIM.
Решения
8.76. PUSH и POP. Команды XTHL и SPHL также связаны со стеком тогда, когда они могут изменить cодержимое указателя стека. 8.77. RIM и SIM. 8.78. 2000Н. 8.79. (20S0H)=21H и (2081Н)=20Н. 8.80. Бит b3 устанавливается в 1. 8.81. 76Н; не устанавливает никакие; прерывание. 8.82. Прямую; программы. 8.63. Получения; SID; седьмом. 8.84. Запрещается. 8.85. SOD (последовательный ввод данных)—1; SOE (разрешение последовательного ввода)—0; R7.5 (сброс триггера RST7.5)—0; MSE (разрешение установить маску) — 1; М7.5 (маска RST7.5)—0; М6.5 (маска RST6.5) — 0; М5.5 (маска RST5.5) — 0. 8.86. Бит разрешения последовательного вывода регистра I запрещен, следовательно, последовательных данных и их захвата не будет. 8.87. RST7.5, RST6.5, RST5.5.
Дополнительные упражнения к гл. 8
Первый микропроцессор 4004 на 4 бит был выпущен фирмой Intel в ____.
Микропроцессор Intel 8085 является улучшенным вариантом _______.
8.90. Микропроцессор Intel 8085 используется обычно с
двумя специальными периферийными кристаллами _______
которые содержат ОЗУ, ПЗУ и порты ВВ.
См. рис. 8.2. Выводы 12—19 являются цепями двунаправленной шины _______.
См. рис. 8.2. Вход READY тесно связан с состоянием _______ (останова, ожидания) процессора.
См. рис. 8.2. Какие два вывода (входной и выходной) тесно связаны с ПДП?
См. табл. 8.2. Сигналы управления МП Intel 8085 IО/М — 0, S1 = 1 и S2 = 0 показывают, что имеет место операция, выполняемая процессором. Какая?
8.95. Первичный аккумулятор является регистром
8.96. Какой 16-разрядный регистр содержит всегда ад- рес и указывает на команду, выполняемую последовательно?
8.97. Индикатор знака, сброшенный в 0, означает, что
результат выполненной арифметической операции _______
(положителен, отрицателен).
Индикатор нуля, сброшенный в 0 после арифметической операции, означает, что результатом в аккумуляторе является _____(нуль, не нуль).
Вход TRAP является ______ (маскированным, немаскированным) прерыванием и не может быть запрещен.
8.100. См. табл. 8.3. Когда аппаратное прерывание
RST6.5 активизировано, МП сохранит содержимое _______
в стеке и ответвится по шестнадцатеричному адресу памяти ________ .
Вторичные аккумуляторы (ВС, DE и HL) могут быть аккумуляторами или ________.
Микропроцессор Intel 8085 снабжен ________ индикаторами, которые содержат информацию о состоянии.
Команда MOV A, L передает данные из одного
регистра в другой, следовательно, имеет место ________
способ адресации.
Команда MVI L передает данные из второго байта команды в регистр ________ , адресация будет _______.
Каждая команда косвенной регистровой адресации использует ________ (1,3) байт программной памяти.
8.106. Команды косвенной адресации используют _______ (1,2 или 3) байт программной памяти.
8.107. Состав команд МП Intel 8080 и Intel 8085 _______
(идентичен, почти идентичен).
Для Intel 8080/8085 команда поместить А в память является командой _______ (ветвления, передачи данных) .
Для Intel 8080/8085 команда сдвига является командой ________(передачи данных, логической).
Для Intel 8080/8085 команда CALL будет классифицирована как команда ________ (ветвления, логическая).
См. табл. 8.4. Каждая команда МП Intel 8080/8085 имеет мнемонику и ________.
См. табл. 8.4. Некоторые мнемоники содержат букву I — ADI v, ANI v, MVI v, например. Когда в командах появляется буква I, это означает, что адресация ________.
См. табл. 8.4. Каковы мнемоники двух команд, используемых МП Intel 8085 и не используемых МП Intel 8080?
В команде MOV D, Е источником является регистр _________, назначением — регистр ________.
8.115. Источником данных команды MVI А являет- ся _________.
Команда MOV В, М имеет _____ адресацию.
Команда STA имеет _______ адресацию.
Команда MOV A, L имеет ________адресацию.
Команда ADD М складывает содержимое памяти, указанное парой _______, с содержимым регистра
_________. Сумма помещается в регистр ________.
8.120. См. рис. 8.34. Шестнадцатеричный КОП команды INX Н _______.
8.121. См. рис. 8.34. Команда INX Н имеет ________ адресацию.
См. рис. 8.34. Записать содержимое регистров Н и L после инкрементирования.
Знак,
используемый фирмой Intel, описывает
логическую операцию ________(И, ИЛИ).
Команда XRA А выполняет операцию ИЛИ ИСКЛЮЧАЮЩЕЕ содержания регистра ______ с самим собой. Результат ________ (сбрасывает, проверяет) аккумулятор.
См. рис. 8.35. Код операции команды CPI _______
8.126. См. рис. 8.35. Каково содержимое аккумулятора после выполнения команды CPI?
См. рис. 8.35. Перечислить состояния индикаторов после команды CPI.
Команды CALL тесно связаны с подпрограммами, тогда как команды рестарта с _________.
8.129. Команда JPE относится к операции _____ (условного, безусловного) перехода.
8.130. Команда RNZ проверяет состояние индикатора _____ перед выполнением операции возврата.
8.131. См. рис. 8.36. Команда RET является _______ байтовой, КОП которой _______ .
8.132. См. рис. 8.36. Каким будет содержимое счетчика команд после возврата из подпрограммы?
См. рис. 8.36. Каким будет содержимое указателя стека после выполнения команды RET?
Операции PUSH и POP выполняются по командам из _______ байт с ______ адресацией.
Операции IN и OUT выполняются по командам, состоящим из ______ байт с _______ адресацией.
Выполнение команды DI не будет признавать прерывания. Какие?
Каковы действия команды SIM?
Решения
8.88. 1971 г. 8.89. Intel 8080. 8.90. Intel 8155, Intel 8355. 8.91. Адреса/данных (шина мультиплексирована). 8.92. Ожидания. 8.93. Входной HOLD, выходной HLDA (подтверждение состояния захвата). 8.94. Считывание из памяти. 8.95. А. 8.96. Счетчик команд. 8.97. Положителен. 8.98. Не нуль. 8.99. Немаскированным. 8.100. Счетчика команд (PC); 34Н. 8.101. Указателями стека. 8.102. Пятью. 8.103. Регистровый. 8.104. L; непосредственная. 8.105. 1. 8.106. 1. 8.107. Почти идентичен. 8.108. Передачи данных. 8.109. Логический. 8.110. Ветвления. 8.111. КОП. 8.112. Непосредственная. 8.113. RIM, SIM. 8.114. Е; D. 8.115. Второй байт команды в памяти программы. 8.116. Косвенную регистровую.
8.117. Прямую. 8.118. Регистровую. 8.119. HL; А; А. 8.120. 23Н. 8.121. Регистровую. 8.122. Регистр (Н) =0000 0001, регистр (L) =0000 0000. 8.123. ИЛИ. 8.124. А; сбрасывает. 8.125. FEH. 8.126. 1111 0000 (без изменения). 8.127. (S)=0, (AC)=0, (CY)=0, (Z) = l, (P) = l. 8.128. Прерываниями. 8.129. Условного. 8.130. Нуля (Z). 8.131. Одно-; F0H. 8.132. 2004Н. 8.133. 2082Н. 8.134. Т; косвенной регистровой. 8.135. 2; прямой. 8.136. INTR; RST5.5; RST6.5; RST7.5. 8.137. Программирование маски прерываний для аппаратных прерываний RST5.5,6.5 и 7.5; сброс защелок прерываний RST7.5 для прерывания фронтом импульсов и захвата выхода SOD.