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

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

.doc
Скачиваний:
174
Добавлен:
13.05.2015
Размер:
917.5 Кб
Скачать

8.8. КОМАНДЫ ВЕТВЛЕНИЙ И ПЕРЕХОДОВ МП INTEL 8080/8085

Рассмотрим краткое изложение команд ветвлений и переходов МП Intel 8080/8085. Они записаны только мне­моникой фирмы Intel и шестнадцатеричным КОП каждой команды. Здесь адр. — 16-разрядный адрес (байт 2 и 3 трехбайтовой команды).

Как и ранее, группа команд ветвления будет показана в собственном формате фирмы Intel. Она содержит коман­ды перехода, вызова, возврата и повторного запуска (ре­старта). Эта группа изменяет последовательный нормаль­ный ход программы. Команды здесь двух типов: условного и безусловного переходов. Безусловные переходы просто выполняют операцию, определенную счетчиком команд; условные — проверяют состояние одного из индикаторов МП для определения целесообразности задаваемого ветв­ления. Условия, которые могут быть уточнены, задаются в технической документации пользователя фирмой Intel в следующей форме:

Смысл сокращений, используемых в следующих описа­ниях, приведен в § 8.5.

JMP addr (Jump). Переход или ветвление. (РС)<--<-(байт 3) (байт 2). Управление передается команде, ад­рес которой установлен в байт 3 и 2 текущей команды.

Циклов — 3; периодов T—10; адресация — непосредствен­ная; индикаторы — никакие.

Jcondition addr (Conditionel jump). Условное ветвление. Если (CCC), то (PC) <- (байт 3) (байт 2). Если установлен­ное условие выполняется, управление передается команде, адрес которой установлен в байт 2 и 3 текущей команды; если нет — управление продолжается последовательно.

Циклов —2/3 (8085), 3 (8080); периодов 7 — 7/10 (8085), 10 (8080); адресация — непосредственная; индикаторы — никакие.

CALL addr (Call). Вызов. ((SP)—1)<-(РСН); ((SP)—2)<-(PCL); (SP)<-(SP)— 2; (РС)<-(байтЗ) (байт 2). Старших 8 бит следующей команды передаются в па­мять, адрес которой на 1 меньше содержимого регистра SP. Восемь бит следующей команды передаются в память, адрес которой на 2 меньше содержимого регистра SP. Со­держимое регистра SP дважды декрементируется. Управ­ление передается команде, адрес которой определяется байт 3 и 2 текущей команды.

Циклов — 5; периодов T— 18 (8085), 17 (8080); адреса­ция—непосредственная, косвенная регистровая; индикато­ры — никакие.

Condition addr (Conditionel call). Условный вызов. Если (CCC), то ((SP)—1)<-(РСН); ((SP)—2)<-(PCL); (SP)<-(SP)— 2; (РС)<-(байт 3) (байт 2). Если заданные условия выполняются, выполняются действия, определен­ные в команде CALL (см. выше); если нет — управление продолжается последовательно.

Циклов —2/5 (8085), 3/5 (8080); периодов 7 — 9/18 (8085), 11/17 (8080); адресация — непосредственная, косвенно ре­гистровая; индикаторы — никакие.

RET (Return). Возврат. (PCL)<-((SP)); (РСН)<-<—((SP))+1); (SP)<-(SP)+2. Содержимое памяти, адрес которой определен в регистре SP, передается в младших 8 бит регистра PC. Содержимое памяти, адрес которой на старше содержимого регистра SP, передается в старших 8 бит регистра PC. Содержимое регистра SP дважды инкрементируется.

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

Rcondition (Conditional return). Возврат условный. Ес­ли (ССС),то (PCL)<-((SP)); (PCH)<-((SP) + 1); (SР)<-<-(SP)+2. Если данное условие удовлетворено, выполня­ются действия, определенные командой возврата (см. вы­ше), если нет — управление следует последовательно.

Циклы —1/3; периодов T — 6/12 (8085), 5/11 (8080); адре­сация— косвенная регистровая; индикаторы — никакие.

RST (Restart). Повторный пуск (рестарт). ((SP) — 1<-<-(РСН); ((SP)—2) <-(PCL); (SP)<-(SP)-2; (РС)<-<-8X(NNN). Старших 8 бит адреса следующей команды передаются в память, адрес которой на 1 меньше содер­жимого SP. Младших 8 бит адреса следующей команды передаются в память, адрес которой меньше на 2 единицы содержимого регистра SP. Содержимое регистра SP де­крементируется дважды. Управление передается команде, адресом которой является 8 раз содержимое NNN (8Х XNNN).

Счетчик команд после команды рестарта.

PCHL (Jump Н and L indirect — move Н and L to PC). Перейти H и L косвенно — передать H и L в PC. (РСН)<-<-(Н); (PCL)<-(L). Содержимое регистра Н передается в старших 8 бит регистра PC, а регистра L —в младших 8 бит регистра PC.

Циклов —1; периодов Т — 6 (8085), 5 (8080); адресация-регистровая; индикаторы — никакие.

Рассмотрим на рис. 8.25 использование команды ус­ловного перехода. Команда JZ имеет КОП 1100 10102-Часть 001 КОП (биты 5, 4 и 3) определяет, что условием перехода является (Z) = l. На рис. 8.25 —это повод пере­дать новый 16-битовый адрес в счетчик команд PC. Млад­ший адрес (0000 0000) передается сначала, затем — стар­ший адрес (0010 00012). Новый адрес, помещенный в счет­чик команд, побуждает МП перейти в новую область программы.

Команда специального ветвления CALL используется для перехода от основной программы к подпрограмме. Она сочетает переход и помещение в стек данных. Как и в ти­повом МП, помещается сначала 16-разрядное содержимое счетчика команд PC. Затем осуществляется передача в счетчик команд 16-разрядного адреса подпрограммы. Пос­ле этого МП переходит к подпрограмме.

В отличие от типового МП Intel 8080/8085 снабжен ко­мандами условного вызова. В этом случае только что опи­санная команда вызова выполняется, если только выпол­нено особое заданное условие.

Как и в типовом микропроцессоре, в Intel 8080/8085 используют команды возврата, позволяющие ему возвра­щаться в строго определенное место памяти основной про­граммы после окончания подпрограммы. Кроме того, МП Intel 8080/8085 снабжены командами условного возврата, которые выполняются, если только выполняется особое за­данное условие.

Команды рестарта (повторного пуска) являются спе­циальными и специфическими командами вызова, предна­значенными для прерываний. Как и CALL, команда ре­старта помещает в стек содержимое счетчика команд и переходит по одному из восьми предопределенных адресов. Разница состоит только в том, что CALL непосредственно определяет адрес перехода. В формате команды RST адрес перехода определяется 3-разрядным кодом (бит 5, 4 и 3). Например, КОП команды RST 2—1101 0111 (D7H). Ад­ресный код 010 (210), умножается на 8, что дает 1610, или 100002, т.е. адрес перехода в этом примере составляет 0000 0000 0001 00002.

Рассмотрим пример, показанный на рис. 8.26, относя­щийся к команде RST7. Заметим, что указатель стека ус­тановлен в 2089Н до операции RST7. Эта команда помеща­ет в стек текущее содержимое счетчика команд. Затем предопределенный адрес (8х7 = 56ю = 38Н) передается в счетчик команд PC, что вызывает переход или рестарт МП по новому адресу 0000 0000 ООП 10002 (0038Н).

Команда рестарта редко появляется в коде источника в прикладных программах. Наиболее часто периферии, тре­бующие обслуживания прерывания, посылают эту одно­байтовую команду процессору. Поэтому иногда рестарты называют программными прерываниями.

Упражнения

8.63. Команда JMP является _____ байтовой и ______

(прямой, непосредственной) адресации. В ходе ее выполнения 2 байт программной памяти передаются в _______

(счетчик команд, указатель стека).

8.64. Команды вызова и ________ (возврата, повторного

пуска) используются парно.

8.65. Операция ________ (возврата, рестарта) является

особой формой команды вызова, используемой прерыва­ниями.

8.66. Команда JNC является командой _____ (условного, безусловного) перехода, двоичный КОП которой

______ . Операция определена одной командой из _________

байт _______ (прямой, непосредственной) адресации.

Мнемоника однобайтовой команды, которая обра­щает МП Intel 8080/8085 в память 0000Н, есть _______.

Мнемоника команды группы передачи данных, ко­торая обращает МП Intel 8080/8085 по адресу, содержа­щемуся в паре HL, есть _______.

См. рис. 8.27. Мнемоникой условного перехода яв­ляется _______ .

8.70. См. рис. 8.27. Согласно имеющемуся содержимому

в регистре состояния условия условного перехода _____

(выполнены, не выполнены)

См. рис. 8.27. Каково 16-разрядное содержимое счетчика команд после выполнения условного перехода.

См. рис. 8.28. Двоичный КОП команды рестар­та ________ .

См. рис. 8.28. Перечислить содержимое ячеек 2183Н и 2184Н стека после выполнения операции рестарта.

Перечислить содержимое счетчика команд PC пос­ле операции рестарта на рис. 8.28.

См. рис. 8.28. Каково шестнадцатеричное содер­жимое указателя стека после выполнения команды RST4?

Решения

8.63. Трех-; непосредственной; счетчик команд. 8.64. Возврата. 8.65. Рестарта. 8.66. Условного; 1101 0010; 3; непосредственной. 8.67. RSTO. 8.68. PCHL. 8.69. JP (перейти, если плюс). 8.70. Индикатор знака (S) = = 1; число отрицательно; перехода нет, значит — не выполнены. 8.71. (S) = l, перехода нет, значит (РС)=2003Н или 0010 0000 0000 00112. 8.72. 1110 0111 или Е7Н. 8.73. (PC) загружается в стек следующим образом: сначала старший байт загружается в ячейку памяти 2184Н, содержимое которой становится 0000 0010, затем младший байт —в ячейку памяти 2183Н, которая будет содержать 1111 0000. 8-74. Микро­процессор умножает номер рестарта (здесь 4]0) на 8, что дает 32ю (или 20Н). Новый двоичный адрес в PC —0000 0000 0010 0000 (0020Н), по которому переходит процессор. 8.75, 2183Н.