Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессоры Токхайм / 8.9. КОМАНДЫ СТЕКА, ВВ и УПРАВЛЕНИЯ МП INTEL 8080-8085

.doc
Скачиваний:
192
Добавлен:
13.05.2015
Размер:
3.57 Mб
Скачать

8.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; адресация — прямая; инди­каторы — никакие.

Циклов —3; периодов T—10; адресация — косвенная реги­стровая; индикаторы — Z, S, Р, AC, CY.

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)

в) не активизируется или маскируется прерывание более высокого приоритета RST6.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.