Команды передачи управления
Мнемоника | Код | Число циклов | Число тактов | Флаги: CY, Z, M, P, C, AC | Содержание |
PCHL | E9 | ----- | PC <- HL | ||
JMP addr | C3 | ----- | PC <- addr | ||
JC addr | DA | ----- | if (CY) PC <- addr | ||
JNC addr | D2 | ----- | if (!CY) PC <- addr | ||
JZ/JNZ addr | CA/C2 | ----- | if (Z /!Z) PC <- addr | ||
JM/JP addr | FA/F2 | ----- | if (M /!M) PC <- addr | ||
JPE/JPO addr | EA/E2 | ----- | if (P /!P) PC <- addr | ||
CALL addr | CD | ----- | -(SP) <- PC <- addr | ||
CC/CNC addr | DC/D4 | 3/5 | 11/17 | ----- | if (CY /!CY) CALL addr |
CZ/CNZ addr | CC/C4 | 3/5 | 11/17 | ----- | if (Z /!Z) CALL addr |
CM/CP addr | FC/F4 | 3/5 | 11/17 | ----- | if (M /!M) CALL addr |
CPE/CPO addr | EC/E4 | 3/5 | 11/17 | ----- | if (P /!P) CALL addr |
RET | C9 | ----- | PC <- (SP)+ | ||
RC/RNC | D8/D0 | 1/3 | 5/11 | ----- | if (CY /!CY) RET |
RZ/RNZ | C8/C0 | 1/3 | 5/11 | ----- | if (Z /!Z) RET |
RM/RP | F8/F0 | 1/3 | 5/11 | ----- | if (M /!M) RET |
RPE/RPO | E8/E0 | 1/3 | 5/11 | ----- | if (P /!P) RET |
Эти команды содержат три основные операции, типичные для большинства МП, и организуют безусловный переход:
JMP Переход
CALL Вызов подпрограммы
RET Возврат из подпрограммы
Для поддержки условной передачи управления на их базе построены три соответствующие модификации базовых операций:
|
|
Jcc Условный переход
Ccc Условный вызов ПП
Rcc Условный возврат из ПП
Каждая операция обеспечивает проверку 8 условий, в соответствии с результатами которой меняются значения поля СС:
C Carry CY=1 M Minus M=1
NC Not Carry CY=0 P Positive M=0
Z Zero Z=1 PE Parity Even P=1
NZ Not Zero Z=0 PO Parity Odd P=0
Передача управления осуществляется в любую точку 64 килобайтовой области пространства памяти.
Наличие команды PCHL решает важную проблему передачи управления по вычисляемому адресу.
Сюда входят две команды ВВ с прямой адресацией порта IN, OUT. Команды EI и DI разрешают и запрещают прием запросов на прерывания, сбрасывая и устанавливая маску прерывания.
Однобайтовая команда RST n, n=0..7, представляющая собой укороченный вариант команды CALL addr при addr=8*n, обеспечивает возможность программной инициализации процедур обслуживания прерываний и вызова операционной системы или ее специальных средств.
Команда HLT приостанавливает работу МП, который, однако, сохраняет возможность обслуживания запросов на прерывания при сброшенной маске. МП может быть выведен из состояния останова двумя путями: перезапуском и по сигналу прерывания.
Команда NOP может быть полезна для организации коротких пауз и установки “заплат” на объектный код при его модификации.
Мнемоника | Код | Число циклов | Число тактов | Флаги: CY, Z, M, P, C, AC | Содержание |
IN port | DB | ----- | A <- IOSEG (port) | ||
OUT port | D3 | ----- | IOSEG (port) <- A | ||
RST n | 11NNN111 | ----- | -(SP) <- PC <- 8*n, n=0..7 | ||
EI | FB | ----- | Разрешить прерывание | ||
DI | F3 | ----- | Запретить прерывание | ||
RIM* | - | - | ----- | Чтение маски | |
SIM* | - | - | ----- | Установка маски | |
HLT | ----- | Останов | |||
NOP | ----- | Нет операции |
На рисунке 3.10 показано окно эмулятора микропроцессорной системы на МП КР580ВМ80А
|
|
Рисунок 3.10 — Окно эмулятора микропроцессорной системы на МП КР580ВМ80А