
- •I8085 — это i8080 с некоторыми дополнительными и улучшенными характеристиками, к которым относятся:
- •Формат байта состояния и типы машинного цикла процессора i8080
- •Смена состояний процессора при выполнении программы
- •Регистры процессора i8080
- •Флаги, признаки и условия выполнения команд
- •Команды передачи данных i8080
- •Арифметические команды i8080
- •Логические команды
- •Команды передачи управления
- •Команды стека, ввода-вывода и машинного управления
Логические команды
Количество, влияние на флаги
Всего в группе логических команд 43 команды. Как правило, логические команды влияют на флаги в соответствии с результатом операции.
Команды логических операций и сравнения
Логические операции (И, ИЛИ, Искл. ИЛИ) и операции сравнения над семью регистрами, ячейкой памяти и непосредственными данными (второй операнд) и содержимым аккумулятора (первый операнд).
ANA r(M)
ANI data
ORA r(M)
ORI data
XRA r(M)
XRI data
CMP r(M)
CPI data
-
1
i
1
f
n
a
a
a
Здесь
i — непосредственная адресация (i=1);
fn — функция (function):
00 — AND (И);
01 — XOR (Искл. ИЛИ);
10 — OR (ИЛИ);
11 — CMP (сравнение);
aaa — аргумент (один из семи регистров или ячейка памяти);
Прим. При i=1 aaa=110.
Всего 36 команд. Команды влияют на все флаги в зависимости от результата операции, за исключением команд логических операций. Команды ИЛИ и Искл. ИЛИ сбрасывают индикаторы переноса и вспомогательного переноса в ноль, а при выполнении команды И индикатор переноса сбрасывается, а состояние вспомогательного переноса не определено.
Команды сдвига
Циклические сдвиги влево / вправо, с переносом / без переноса:
RLC — циклический сдвиг содержимого аккумулятора влево;
RRC — циклический сдвиг содержимого аккумулятора вправо;
RAL — циклический сдвиг содержимого аккумулятора влево через флаг переноса;
RAR — циклический сдвиг содержимого аккумулятора вправо через флаг переноса.
Всего 4 команды. Влияют только на флаг переноса.
-
0
0
0
c
r
1
1
1
Здесь
с — перенос (carry): c = 1 — сдвиг через перенос;
r — вправо (right): r = 1 — сдвиг вправо, r = 0 — сдвиг влево.
Команды инвертирования и установки
Инвертирование аккумулятора, установка переноса и инвертирование переноса. 3 команды:
CMA
STC
CMC
-
0
0
1
f
n
1
1
1
Здесь
fn — функция:
01 — CMA
10 — STC
11 — CMC
Команда CMA не влияет на флаги, STC устанавливает флаг переноса в 1, CMC инвертирует флаг переноса.
Команды передачи управления
Количество, влияние на флаги
Всего в группе команд передачи управления 36 команд. Никакие из них не влияют на флаги.
Команды перехода
Условные и безусловный переходы:
JMP addr — безусловный переход (КОП — С3h)
Jcnd addr — условный переход (cnd — условие)
Условия формируют четыре флага: S, Z, P, C.
Т. о., всего получается 9 команд. Размер всех команд этой подгруппы — три байта. Первый байт — КОП, второй и третий — адрес перехода.
-
1
1
c
n
d
0
1
0
Здесь
cnd — condition (условие):
000 — NZ (не ноль);
001 — Z (ноль);
010 — NC (нет переноса);
011 — C (перенос);
100 — PO (нечётный паритет);
101 — PE (чётный паритет);
110 — P (плюс);
111 — M (минус).
Команды вызова подпрограммы
Вызовы подпрограммы безусловный и по восьми условиям:
CALL addr (КОП — СDh)
Ccnd addr
Всего 9 команд.
-
1
1
c
n
d
1
0
0
Команды возврата из подпрограммы
Возвраты безусловный и по восьми условиям:
RET (КОП — С9h)
Rcnd
Всего 9 команд.
-
1
1
c
n
d
0
0
0
Команды повторного запуска (рестарта)
RST N
где N = 0,…,7 — номер рестарта.
Как и команда CALL, команда рестарта помещает в стек содержимое счетчика команд и выполняет переход по определенному адресу. Разница состоит в том, как определяется этот адрес. В команде CALL адрес перехода определен непосредственно во втором и третьем байтах команды. В команде RST адрес перехода определяется умножением номера рестарта (биты 5, 4 и 3 кода операции) на восемь. Например, КОП команды RST 2 — 1101 0111 (D7H). Номер рестарта 010 (210) умножается на 8, что даёт 1610 или 10h. Получается выигрыш в размере команды — команды рестарта однобайтные.
Рестарты аналогичны программным прерываниям процессоров x86.
Всего в этой подгруппе 8 команд.
-
1
1
N
N
N
1
1
1
Здесь NNN — номер рестарта.
Команда RST 7 имеет КОП FFh — все единички, что дает возможность реализовать аппаратное прерывание с помощью этой команды простыми средствами, не используя контроллер прерываний.
Команда PCHL
Помещает в регистр PC (счётчик команд) содержимое пары HL:
(PC)(HL).
КОП — Е9h