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