What's new? | Help | Directory | Sign
in

vector06cc

Vector-06C FPGA Replica /
Вектор-06Ц на ПЛИС

Project Home

Downloads

Wiki

Issues

Source

Search
Search Within:  All Wiki
Pages  Featured Pages  Current Pages  Deprecated Pages for

Updated Jan 17, 2008 by svofski

Labels:

Phase-Design

KP580BM1

КР580ВМ1 -- The Ghost
CPU

СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА
КР580ВМ1.

1. Общая характеристика кодов команд.

Коды команд микропроцессора КР580ВМ1 могут быть длиной
от одного до пяти байт.
Код команды можно разделить на три поля:
поле префиксов;
поле кода операции;
поле адреса или данных.
Обобщенный формат команды можно представить в следующем
виде:

1-й байт 2-й байт 3-й байт 4-й байт 5-й байт
╔═══════════╤═══════════╤═══════════╤═══════════╤═══════════╗
· · · · · ·
· D7 ... D0 · D7 ... D0 · D7 ... D0 · D7 ... D0 · D7 ... D0 ·
· · · · · ·
╚═══════════╧═══════════╧═══════════╧═══════════╧═══════════╝
\__________ __________/ \____ ____/ \__________ __________/
V V V
Поле префиксов Поле кода операции Поле адреса или данных

ПОЛЕ ПРЕФИКСОВ необязательно. В случае, если поле
присутствует в формате команды, то оно может состоять из одного
или из двух байтов. В этом поле записывается префикс замены
банка память MB (код 28H) и (или) префикс замены набора RS (код
38H).
Префикс RS устанавливает на время выполнения одной
команды возможность использования регистров H1 и L1. Пара
регистров HL и H1L1 называется регистровой парой-указателем.
Префикс MB на время выполнения одной команды, в которой
имеется обращение к памяти, меняет текущий банк памяти.
Префикс MB с другим обозначением - CS используется для
изменения алгоритмов выполнения таких команд, как DAD, DSUB,
DCMP.
ПОЛЕ КОДА ОПЕРАЦИИ имеет длину один байт и обязательно
присутствует в коде команды. В поле кода операции может быть
любой код от 000H до 0FFH, кроме кодов префиксов 28H и 38H.
ПОЛЕ АДРЕСА ИЛИ ДАННЫХ необязательно. В случае, если
поле присутствует в формате команды, то оно может состоять из
одного или двух байт. В случае, если в данном поле записывается
адрес, то он занимает два байта поля. Причем, младший байт
адреса записывается первым. В случае, если в данном поле
записываются данные, то количество занимаемых ими байтов зависит
от размера данных следующим образом:
8-битные данные со значением от 0 до 255 или от минус
128 до +127 - один байт;
16-битные данные со значением от 0 до 65535 или от минус
32767 до +32767 - два байта. Причем, младший байт таких данных
записывается первым.

2. Режимы адресации.
В микропроцессоре используется пять различных режимов
адресации:
прямая адресация, при которой младшая половина адреса,
указанная в первом байте поля A/D, и старшая половина адреса,
указанная во втором байте поля A/D кода команды, содержат прямой
адрес операнда, а банк памяти определяется префиксом MB и
текущим банком памяти;
регистровая адресация, при которой адрес регистра,
содержащий операнд, определяется кодом операции и префиксом RS;
регистровая косвенная адресация, при которой адрес
операнда находится в регистровой паре, указанной кодом операции
и префиксом RS;
непосредственная адресация, при которой операнд
содержится в первом или первом и втором байте поля A/D кода
команды;
стековая адресация, при которой адрес определяется
указателем стека. Данный вид адресации является разновидностью
регистровой косвенной, при которой в качестве регистровой пары
используется указатель стека SP.

3. Адресное пространство.
Все адресное пространство, к которому может обращаться
МП, разделено на два банка по 64 Кбайта, условно называемые
основным и дополнительным. Выборка команд производится только
из основного банка, поэтому в основном банке могут распологаться
команды и данные, а в дополнительном банке только данные.
Команды SMF0 и SMF1 устанавливают текущий банк, из которого
будут читаться данные. Текущий банк называется памятью M. По
некоторым командам происходит разовое чтение не из текущего
банка памяти, называемого памятью M1.

4. Регистр признаков.
Процесс выполнения программы можно поставить в
зависимость от значения результата выполнения предыдущих
операций. Для хранения признаков результата выполнения команд в
микропроцессоре имеется 8-разрядный регистр признаков PSW,
называемый также словом состояния программы. Разряды (триггеры)
регистра признаков устанавливаются в "1" или сбрасываются в "0"
в зависимости от типа команды и результата ее вычисления.
Разряды регистра признаков распределяются следующим
образом:

D7 D6 D5 D4 D3 D2 D1 D0
╔════╤════╤════╤════╤════╤════╤════╤════╗
· S · Z · OF · AC · MF · P · I · CY ·
╚════╧════╧════╧════╧════╧════╧════╧════╝

Назначение признаков следующее:
разряд D0 - признак переноса CY. Устанавливается в "1",
если при выполнении операции был перенос из седьмого разряда или
заем в седьмой разряд сумматора;
разряд D1 - не используется. Постоянно установлен в "1";
разряд D2 - признак четности P. Устанавливается в "1",
если число единиц результата операции в сумматоре четное;
разряд D3 - признак выбора банка памяти MF.
Устанавливается командой SMF0 в "0", при этом текущим становится
основной банк памяти, и командой SMF1 в "1", при этом текущим
становится дополнительный банк памяти. Для обращения к банку
памяти, который не является текущим, требуется префикс замены
банка памяти MB;
разряд D4 - признак вспомогательного переноса AC.
Устанавливается в "1", если при выполнении операции был перенос
из третьего разряда или заем в третий разряд сумматора;
разряд D5 - признак переполнения OF. Устанавливается в
"1", если при выполнении операции возникает перенос в старший
разряд сумматора, но не возникает переноса из старшего разряда
или наоборот;
разряд D6 - признак нуля Z. Устанавливается в "1", если
результат операции в сумматоре равен нулю;
разряд D7 - признак знака S. Устанавливается в "1", если
старший разряд результата в сумматоре равен единице.

5. Типы команд.
По функциональному назначению набор команд
микропроцессора можно разделить на следующие группы:
команды пересылки данных. Используются для передачи
данных из регистра в регист, из памяти в регистр и из регистра в
память;
арифметические команды. Используются для сложения,
вычитания, инкремента или декремента содержимого регистра или
памяти, десятичной коррекции содержимого аккумулятора;
команды поразрядной обработки данных. Используются для
выполнения логических операций (И, ИЛИ, исключающее ИЛИ),
операций сравнения, операций сдвига и инвертирования содержимого
аккумулятора;
команды ветвления. Используются для условных и
безусловных переходов в программе, условных и безусловных
вызовов подпрограмм и возврата в них;
специальные команды.

6. Описание системы команд.

6.1. Группа команд пересылки данных.
Команды пересылки данных не воздействуют на регист
признаков за исключением команды POP PSW.

6.1.1. Команда MOV.
Данная команда пересылает содержимое устройства-
источника в устройство-приемник.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 01DDDSSS · MOV <D>, <S> · <D> <= <S> · 1 · 5 ·
· 00111000 · RS MOV <D1>, <S1> · <D1> <= <S1> · 2 · 9 ·
· 01DDDSSS · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 01DDD110 · MOV <D>, M ·<D> <=M(HL) · 2 · 7 ·
·+ 00111000 · RS MOV <D1>, M ·<D1><=M(H1L1) · 3 · 11 ·
· 01DDD110 · · · · ·
·+ 00101000 ·MB MOV <D>, M1 ·<D> <=M1(HL) · 3 · 11 ·
· 01DDD110 · · · · ·
·+ 00101000 ·MB RS MOV <D1>, M1 ·<D1><=M1(H1L1)· 4 · 15 ·
· 00111000 · · · · ·
· 01DDD110 · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 01110SSS · MOV M, <S> ·M(HL) <=<S> · 2 · 7 ·
·+ 00111000 · RS MOV M, <S1> ·M(H1L1) <=<S1>· 3 · 11 ·
· 01110SSS · · · · ·
·+ 00101000 ·MB MOV M1, <S> ·M1(HL) <=<S> · 3 · 11 ·
· 01110SSS · · · · ·
·+ 00101000 ·MB RS MOV M1, <S1> ·M1(H1L1)<=<S1>· 4 · 15 ·
· 00111000 · · · · ·
· 01110SSS · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D>, <S> - имя регистра A B C D E H L
<D1>, <S1> - имя регистра A B C D E H1 L1
DDD, SSS - шаблон битов 000 001 010 011 100 ... 111

6.1.2. Команда MVI.
Данная команда пересылает байт непосредственных данных в
устройство-приемник.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00DDD110 · MVI <D>, <D8> · <D> <=<D8>· 2 · 7 ·
· DDDDDDDD · · · · ·
·+ 00111000 · RS MVI <D1>, <D8> · <D1> <=<D8>· 3 · 11 ·
· 01DDD110 · · · · ·
· DDDDDDDD · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00110110 · MVI M, <D8> ·M(HL) <=<D8>· 3 · 10 ·
· DDDDDDDD · · · · ·
·+ 00111000 · RS MVI M, <D8> ·M(H1L1) <=<D8>· 4 · 14 ·
· 00110110 · · · · ·
· DDDDDDDD · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 00101000 ·MB MVI M1, <D8> ·M1(HL) <=<D8>· 4 · 14 ·
· 00110110 · · · · ·
· DDDDDDDD · · · · ·
·+ 00101000 ·MB RS MVI M1, <D8> ·M1(H1L1)<=<D8>· 5 · 18 ·
·+ 00111000 · · · · ·
· 00110110 · · · · ·
· DDDDDDDD · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D> - имя регистра A B C D E H L
<D1> - имя регистра A B C D E H1 L1
DDD - шаблон битов 000 001 010 011 100 101 ... 111
<D8> - выражение со значением от нуля до +255
DDDDDDDD - байт непосредственных данных

6.1.3. Команда LXI.
Данная команда пересылает два байта непосредственных
данных в регистровую память.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00PP0001 · LXI <P>, <D16> · HIGH<P> <= · 3 · 10 ·
· DLDLDLDL · · HIGH <D16> · · ·
· DHDHDHDH · · LOW <P> <= · · ·
· · · LOV <D16> · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 00111000 · RS LXI <P1>,<D16> · HIGH<P1> <= · 4 · 14 ·
· 00PP0001 · · HIGH <D16> · · ·
· DLDLDLDL · · LOW<P1> <= · · ·
· DHDHDHDH · · LOW <D16> · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <P> - имя регистровой пары BC DE HL SP
<P1> - имя регистровой пары BC DE H1L1 SP
PP - шаблон битов 00 01 10 11
<D16> - выражение со значением от нуля до 65535
DLDLDLDL - младший байт непосредственных данных
DHDHDHDH - старший байт непосредственных данных

6.1.4. Команда LDAX.
Данная команда пересылает содержимое ячейки памяти в
аккумулятор.
Адрес ячейки памяти находится в регистровой паре BC или
DE.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 000P1010 · LDAX <P> · A <= M(<P>) · 2 · 7 ·
·+ 00101000 · MB LDAX <P> · A <= M1(<P>) · 3 · 11 ·
· 000P1010 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <P> - имя регистровой пары BC DE
P - шаблон битов 0 1

6.1.5. Команда STAX.
Данная команда пересылает содержимое аккумулятора в
ячейку памяти.
Адрес ячейки памяти находится в регистровой паре BC или
DE.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 000P0010 · STAX <P> · M(<P>) <= A · 2 · 7 ·
·+ 00101000 · MB STAX <P> · M1(<P>)<= A · 3 · 11 ·
· 000P0010 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <P> - имя регистровой пары BC DE
P - шаблон битов 0 1

6.1.6. Команда LDA.
Данная команда пересылает содержимое ячейки памяти в
аккумулятор.
Прямой адрес ячейки памяти находится в коде команды.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00111010 · LDA <A16> · A <= M (A16) · 4 · 13 ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
·+ 00101000 · MB LDA <A16> · A <= M1(A16) · 5 · 17 ·
· 00111010 · · · · ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <A16> - выражение со значением от нуля до 65535
ALALALAL - младший байт прямого адреса
AHAHAHAH - старший байт прямого адреса

6.1.7. Команда STA.
Данная команда пересылает содержимое аккумулятора в
ячейку памяти.
Прямой адрес ячейки памяти находится в коде команды.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00110010 · STA <A16> · M (A16) <= A · 4 · 13 ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
·+ 00101000 · MB STA <A16> · M1(A16) <= A · 5 · 17 ·
· 00110010 · · · · ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <A16> - выражение со значением от нуля до 65535
ALALALAL - младший байт прямого адреса
AHAHAHAH - старший байт прямого адреса

6.1.8. Команда LHLD
Данная команда пересылает содержимое слова памяти в
регистровую пару-указатель.
Прямой адрес слова памяти находится в коде команды.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00101010 · LHLD <A16> · L<=M(A16) · 5 · 16 ·
· ALALALAL · · H<=M(A16+1) · · ·
· AHAHAHAH · · · · ·
·+ 00101000 · MB LHLD <A16> · L<=M1(A16) · 6 · 20 ·
· 00101010 · · H<=M1(A16+1) · · ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
·+ 00111000 · RS LHLD <A16> · L1<=M(A16) · 6 · 20 ·
· 00101010 · · H1<=M(A16+1) · · ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
·+ 00101000 · MB RS LHLD <A16> · L1<=M1(A16) · 7 · 24 ·
· 00111000 · · H1<=M1(A16+1)· · ·
· 00101010 · · · · ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <A16> - выражение со значением от нуля до 65535
ALALALAL - младший байт прямого адреса
AHAHAHAH - старший байт прямого адреса

6.1.9. Команда SHLD.
Данная команда пересылает содержимое регистровой пары-
указателя в слово памяти.
Прямой адрес слова памяти находится в коде команды.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00100010 · SHLD <A16> · M(A16)<=L · 5 · 16 ·
· ALALALAL · · M(A16+1)<=H · · ·
· AHAHAHAH · · · · ·
·+ 00101000 · MB SHLD <A16> · M1(A16)<=L · 6 · 20 ·
· 00100010 · · M1(A16+1)<=H · · ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
·+ 00111000 · RS SHLD <A16> · M(A16)<=L1 · 6 · 20 ·
· 00100010 · · M(A16+1)<=H1 · · ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
·+ 00101000 · MB RS SHLD <A16> · M1(A16)<=L1 · 7 · 24 ·
· 00111000 · · M1(A16+1)<=H1· · ·
· 00100010 · · · · ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <A16> - выражение со значением от нуля до 65535
ALALALAL - младший байт прямого адреса
AHAHAHAH - старший байт прямого адреса

6.1.10. Команда LHLX.
Данная команда пересылает содержимое слова памяти в
регистровую пару-указатель.
Адрес слова памяти находится в регистровой паре DE.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 11101101 · LHLX · L <=M(DE) · 3 · 10 ·
· · · H <=M(DE+1) · · ·
·+ 00101000 · MB LHLX · L <=M1(DE) · 4 · 14 ·
· 11101101 · · H <=M1(DE+1) · · ·
·+ 00111000 · RS LHLX · L1<=M(DE) · 4 · 14 ·
· 11101101 · · H1<=M(DE+1) · · ·
·+ 00101000 · MB RS LHLX · L1<=M1(DE) · 5 · 18 ·
· 11101101 · · H1<=M1(DE+1) · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.1.11. Команда SHLX.
Данная команда пересылает содержимое регистровой пары-
указателя в слово памяти.
Адрес слова памяти находится в регистровой паре DE.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 11001101 · SHLX · M(DE) <=L · 3 · 10 ·
· · · M(DE+1) <=H · · ·
·+ 00101000 · MB SHLX · M1(DE) <=L · 4 · 14 ·
· 11001101 · · M1(DE+1)<=H · · ·
·+ 00111000 · RS SHLX · M(DE) <=L1 · 4 · 14 ·
· 11001101 · · M(DE+1) <=H1 · · ·
·+ 00101000 · MB RS SHLX · M1(DE) <=L1 · 5 · 18 ·
· 11001101 · · M1(DE+1)<=H1 · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.1.12. Команда SPHL.
Данная команда пересылает содержимое регистровой пары-
указателя в регистр указателя стека SP.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11111001 · SPHL · SP <= HL · 1 · 5 ·
·+ 00111000 · RS SPHL · SP <= H1L1 · 2 · 9 ·
· 11111001 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.1.13. Команда XTHL.
Данная команда обменивает содержимым слово верхушки
стека и регистровую пару-указатель.
Адрес слова верхушки стека находится в регистре SP.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11100011 · XTHL · L <=> (SP) · 5 · 18 ·
· · · H <=> (SP+1)· · ·
·+ 00111000 · RS XTHL · L1 <=> (SP) · 6 · 22 ·
· 11100011 · · H1 <=> (SP+1)· · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.1.14. Команда XCHG.
Данная команда обменивает содержимым регистровые пары DE
и HL.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11101011 · XCHG · HL <=> DE · 1 · 4 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.1.15. Команда PUSH.
Данная команда пересылает содержимое регистровой пары в
верхушку стека.
Адрес верхушки стека находится в регистре SP.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11PP0101 · PUSH <P> · (SP-1) <= · 3 · 11 ·
· · · HIGH <P> · · ·
· · · (SP-2) <= · · ·
· · · LOW <P> · · ·
· · · SP <= SP-2 · · ·
· 11110101 · PUSH PSW · (SP-1) <=A · 3 · 11 ·
· · · (SP-2) <=PSW · · ·
· · · SP <= SP-2 · · ·
·+ 00111000 · RS PUSH <P1> · (SP-1) <= · 4 · 15 ·
· · · HIGH <P1> · · ·
· 11PP0101 · · (SP-2) <= · · ·
· · · LOW <P1> · · ·
· · · SP <= SP-2 · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <P> - имя регистровой пары BC DE HL
<P1> - имя регистровой пары BC DE H1L1
PP - шаблон битов 00 01 10

6.1.16. Команда POP.
Данная команда пересылает содержимое регистровой пары и
верхушку стека.
Адрес верхушки стека находится в регистре SP.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11PP0001 · POP <P> · LOW <P> <= · 3 · 10 ·
· · · (SP) · · ·
· · · HIGH <P> <= · · ·
· · · (SP+1) · · ·
· · · SP <= SP+2 · · ·
· 11110001 · POP PSW · A <= (SP) · 3 · 10 ·
· · · PSW <= (SP+1)· · ·
· · · SP <= SP+2 · · ·
·+ 00111000 · RS POP <P1> · LOW <P1> <= · 4 · 14 ·
· · · (SP) · · ·
· 11PP0001 · · HIGH <P1> <= · · ·
· · · (SP+1) · · ·
· · · SP <= SP+2 · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <P> - имя регистровой пары BC DE HL
<P1> - имя регистровой пары BC DE H1L1
PP - шаблон битов 00 01 10
Установка признаков (только для команды POP PSW):
S Z OF AC MF P - CY
+ + + + + + 1 +

6.1.17. Команда OUT.
Данная команда пересылает содержимое аккумулятора в порт
внешнего устройства.
Адрес порта находится в коде команды.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11010011 · OUT <E8> · <E8> <= A · 3 · 10 ·
· EEEEEEEE · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <E8> - выражение со значением от нуля до 255
EEEEEEEE - байт адреса порта внешнего устройства.

6.1.18. Команда IN.
Данная команда пересылает содержимое порта внешнего
устройства в аккумулятор.
Адрес порта находится в коде команды.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11011011 · IN <E8> · A <= <E8> · 3 · 10 ·
· EEEEEEEE · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <E8> - выражение со значением от нуля до 255
EEEEEEEE - байт адреса порта внешнего устройства.

6.2. Группа арифметических команд.

6.2.1. Команда ADD.
Данная команда складывает содержимое аккумулятора и
устройства-источника. Результат записывается в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10000SSS · ADD <S> · A<=A+<S> · 1 · 4 ·
·+ 00111000 · RS ADD <S1> · A<=A+<S1> · 2 · 8 ·
· 10000SSS · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10000110 · ADD M · A<=A+M(HL) · 2 · 7 ·
·+ 00111000 · RS ADD M · A<=A+M(H1L1) · 3 · 11 ·
· 10000110 · · · · ·
·+ 00101000 · MB ADD M1 · A<=A+M1(HL) · 3 · 11 ·
· 10000110 · · · · ·
·+ 00101000 · MB RS ADD M1 · A<=A+M1(H1L1)· 4 · 15 ·
· 00111000 · · · · ·
· 10000110 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <S> - имя регистра A B C D E H L
<S1> - имя регистра A B C D E H1 L1
SSS - шаблон битов 000 001 010 011 100 101 ... 111
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 +

6.2.2. Команда ADC.
Данная команда складывает содержимое аккумулятора,
устройства-источника и триггера признака переноса. Результат
записывается в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10001SSS · ADC <S> ·A<=A+<S>+CY · 1 · 4 ·
·+ 00111000 · RS ADC <S1> ·A<=A+<S1>+CY · 2 · 8 ·
· 10001SSS · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10001110 · ADC M ·A<=A+M(HL)+CY · 2 · 7 ·
·+ 00111000 · RS ADC M ·A<=A+M(H1L1)+ · 3 · 11 ·
· 10001110 · · +CY · · ·
·+ 00101000 · MB ADC M1 ·A<=A+M1(HL)+CY· 3 · 11 ·
· 10001110 · · · · ·
·+ 00101000 · MB RS ADC M1 ·A<=A+M1(H1L1)+· 4 · 15 ·
· 00111000 · · +CY · · ·
· 10001110 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <S> - имя регистра A B C D E H L
<S1> - имя регистра A B C D E H1 L1
SSS - шаблон битов 000 001 010 011 100 101 ... 111
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 +

6.2.3. Команда SUB.
Данная команда вычитает из содержимого аккумулятора
содержимое устройства-источника. Результат записывается в
аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10010SSS · SUB <S> · A<=A-<S> · 1 · 4 ·
·+ 00111000 · RS SUB <S1> · A<=A-<S1> · 2 · 8 ·
· 10010SSS · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10010110 · SUB M · A<=A-M(HL) · 2 · 7 ·
·+ 00111000 · RS SUB M · A<=A-M(H1L1) · 3 · 11 ·
· 10010110 · · · · ·
·+ 00101000 · MB SUB M1 · A<=A-M1(HL) · 3 · 11 ·
· 10010110 · · · · ·
·+ 00101000 · MB RS SUB M1 · A<=A-M1(H1L1)· 4 · 15 ·
· 00111000 · · · · ·
· 10010110 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <S> - имя регистра A B C D E H L
<S1> - имя регистра A B C D E H1 L1
SSS - шаблон битов 000 001 010 011 100 101 ... 111
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 +

6.2.4. Команда SBB.
Данная команда вычитает из содержимого аккумулятора
содержимое устройства-источника и триггера признака переноса.
Результат записывается в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10011SSS · SBB <S> ·A<=A-<S>-CY · 1 · 4 ·
·+ 00111000 · RS SBB <S1> ·A<=A-<S1>-CY · 2 · 8 ·
· 10011SSS · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10011110 · SBB M ·A<=A-M(HL)-CY · 2 · 7 ·
·+ 00111000 · RS SBB M ·A<=A-M(H1L1)- · 3 · 11 ·
· 10011110 · · -CY · · ·
·+ 00101000 · MB SBB M1 ·A<=A-M1(HL)-CY· 3 · 11 ·
· 10011110 · · · · ·
·+ 00101000 · MB RS SBB M1 ·A<=A-M1(H1L1)-· 4 · 15 ·
· 00111000 · · -CY · · ·
· 10011110 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <S> - имя регистра A B C D E H L
<S1> - имя регистра A B C D E H1 L1
SSS - шаблон битов 000 001 010 011 100 101 ... 111
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 +

6.2.5. Команда INR.
Данная команда увеличивает содержимое устройства-
приемника на единицу.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00DDD100 · INR <D> · <D> <= <D>+1 · 1 · 5 ·
·+ 00111000 · RS INR <D1> · <D1><= <D1>+1· 2 · 9 ·
· 00DDD100 · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00110100 · INR M ·M(HL)<=M(HL)+1· 3 · 10 ·
·+ 00111000 · RS INR M · M(H1L1) <= · 4 · 14 ·
· 00110100 · · M(H1L1)+1 · · ·
·+ 00101000 · MB INR M1 · M1(HL) <= · 4 · 14 ·
· 00110100 · · M1(HL)+1 · · ·
·+ 00101000 · MB RS INR M1 · M1(H1L1) <= · 5 · 18 ·
· 00111000 · · M1(H1L1)+1 · · ·
· 00110100 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D> - имя регистра A B C D E H L
<D1> - имя регистра A B C D E H1 L1
DDD - шаблон битов 000 001 010 011 100 101 ... 111
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 -

6.2.6. Команда INX.
Данная команда увеличивает содержимое регистровой пары
или регистра указателя стека на единицу.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00PP0011 · INX <P> · <P> <= <P>+1 · 1 · 5 ·
·+ 00111000 · RS INX <P1> · <P1><= <P1>+1· 2 · 9 ·
· 00PP0011 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <P> - имя регистровой пары BC DE HL SP
<P1> - имя регистровой пары BC DE H1L1 SP
PP - шаблон битов 00 01 10 11
Установка признаков:
S Z OF AC MF P - CY
- - + - - - 1 -

6.2.7. Команда DCR.
Данная команда уменьшает содержимое устройства-приемника
на единицу.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00DDD101 · DCR <D> · <D> <= <D>-1 · 1 · 5 ·
·+ 00111000 · RS DCR <D1> · <D1><= <D1>-1· 2 · 9 ·
· 00DDD101 · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00110101 · DCR M ·M(HL)<=M(HL)-1· 3 · 10 ·
·+ 00111000 · RS DCR M · M(H1L1) <= · 4 · 14 ·
· 00110101 · · M(H1L1)-1 · · ·
·+ 00101000 · MB DCR M1 · M1(HL) <= · 4 · 14 ·
· 00110101 · · M1(HL)-1 · · ·
·+ 00101000 · MB RS DCR M1 · M1(H1L1) <= · 5 · 18 ·
· 00111000 · · M1(H1L1)-1 · · ·
· 00110101 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D> - имя регистра A B C D E H L
<D1> - имя регистра A B C D E H1 L1
DDD - шаблон битов 000 001 010 011 100 101 ... 111
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 -

6.2.8. Команда DCX.
Данная команда уменьшает содержимое регистровой пары или
регистра указателя стека на единицу.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00PP1011 · DCX <P> · <P> <= <P>-1 · 1 · 5 ·
·+ 00111000 · RS DCX <P1> · <P1><= <P1>-1· 2 · 9 ·
· 00PP1011 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <P> - имя регистровой пары BC DE HL SP
<P1> - имя регистровой пары BC DE H1L1 SP
PP - шаблон битов 00 01 10 11
Установка признаков:
S Z OF AC MF P - CY
- - + - - - 1 -

6.2.9. Команда ADI.
Данная команда складывает содержимое аккумулятора и байт
непосредственных данных. Результат записывается в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11000110 · ADI <D8> · A <= A+<D8> · 2 · 7 ·
· DDDDDDDD · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D8> - выражение со значением от нуля до 255
DDDDDDDD - байт непосредственных данных
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 +

6.2.10. Команда ACI.
Данная команда складывает содержимое аккумулятора, байт
непосредственных данных и содержимое триггера признака переноса.
Результат записывается в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11101110 · ACI <D8> · A<=A+<D8>+CY · 2 · 7 ·
· DDDDDDDD · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D8> - выражение со значением от нуля до 255
DDDDDDDD - байт непосредственных данных
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 +

6.2.11. Команда SUI.
Данная команда вычитает из содержимого аккумулятора байт
непосредственных данных. Результат записывается в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11010110 · SUI <D8> · A <= A-<D8> · 2 · 7 ·
· DDDDDDDD · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D8> - выражение со значением от нуля до 255
DDDDDDDD - байт непосредственных данных
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 +

6.2.12. Команда SBI.
Данная команда вычитает из содержимого аккумулятора байт
непосредственных данных и содержимое триггера признака переноса.
Результат записывается в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11011110 · SBI <D8> · A<=A-<D8>-CY · 2 · 7 ·
· DDDDDDDD · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D8> - выражение со значением от нуля до 255
DDDDDDDD - байт непосредственных данных
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 +

6.2.13. Команда DAD.
Данная команда складывает содержимое регистровой пары-
указателя, регистровой пары BC, DE, HL (H1L1) или регистра
указателя стека SP и при необходимости триггера признака
переноса. Результат записывается в регистровую пару-указатель.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00PP1001 · DAD <P> · HL<=HL+<P> · 3 · 10 ·
·+ 00111000 · RS DAD <P1> · H1L1 <= · 4 · 14 ·
· 00PP1001 · · H1L1+<P1> · · ·
·+ 00101000 · CS DAD <P> · HL <= · 4 · 14 ·
· 00PP1001 · · HL+<P>+CY · · ·
·+ 00101000 · CS RS DAD <P1> · H1L1 <= · 5 · 18 ·
· 00111000 · · H1L1+<P1>+CY · · ·
· 00PP1001 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <P> - имя регистровой пары BC DE HL SP
<P1> - имя регистровой пары BC DE H1L1 SP
PP - шаблон битов 00 01 10 11
Установка признаков:
S Z OF AC MF P - CY
- - - - - - 1 +

6.2.14. Команда DSUB.
Данная команда вычитает из содержимого регистровой пары-
указателя содержимое регистровой пары BC или DE и при
необходимости триггера признака переноса. Результат
записывается в регистровую пару-указатель. Признак S
устанавливается по содержимому 15-го разряда результата.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 000P1000 · DSUB <P> · HL<=HL-<P> · 3 · 10 ·
·+ 00111000 · RS DSUB <P> · H1L1 <= · 4 · 14 ·
· 000P1000 · · H1L1-<P1> · · ·
·+ 00101000 · CS DSUB <P> · HL <= · 4 · 14 ·
· 000P1000 · · HL-<P>-CY · · ·
·+ 00101000 · CS RS DSUB <P> · H1L1 <= · 5 · 18 ·
· 00111000 · · H1L1-<P1>-CY · · ·
· 000P1000 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <P> - имя регистровой пары BC DE
P - шаблон битов 00 01
Установка признаков:
S Z OF AC MF P - CY
+ + - - - - 1 +

6.2.15. Команда DAA.
Данная команда преобразует двоичное число в аккумуляторе
в его двоично-десятичное представление.
1. Если младшие 4 бита аккумулятора представляют число,
которое больше 9, или если триггер вспомогательного переноса
регистра признаков AC=1, то содержимое аккумулятора
увеличивается на 6. В противном случае изменение не происходит.
2. Если старшие 4 бита аккумулятора представляют число,
которое больше 9, или если триггер переноса (заема) регистра
признаков CY=1, то старшие 4 бита аккумулятора увеличиваются на
6. В противном случае изменение не происходит.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00100111 · DAA · · 1 · 4 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
- + - - - - 1 +

6.3. Группа команд поразрядной обработки данных.
6.3.1. Команда ANA.
Данная команда выполняет поразрядное логическое
умножение содержимого аккумулятора и устройства-источника.
Результат записывается в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10100SSS · ANA <S> · A<=A AND <S> · 1 · 4 ·
·+ 00111000 · RS ANA <S1> · A<=A AND <S1>· 2 · 8 ·
· 10100SSS · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10100110 · ANA M ·A<=A AND M(HL)· 2 · 7 ·
·+ 00111000 · RS ANA M · A<=A AND · 3 · 11 ·
· 10100110 · · M(H1L1) · · ·
·+ 00101000 · MB ANA M1 · A<=A AND · 3 · 11 ·
· 10100110 · · M1(HL) · · ·
·+ 00101000 · MB RS ANA M1 · A<=A AND · 4 · 15 ·
· 00111000 · · M1(H1L1) · · ·
· 10100110 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <S> - имя регистра A B C D E H L
<S1> - имя регистра A B C D E H1 L1
SSS - шаблон битов 000 001 010 011 100 101 ... 111
Установка признаков:
S Z OF AC MF P - CY
+ + - 0 - + 1 0

6.3.2. Команда ANI.
Данная команда выполняет поразрядное логическое
умножение содержимого аккумулятора и байта непосредственных
данных. Результат записывает в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11100110 · ANI <D8> · A<=A AND <D8>· 2 · 7 ·
· DDDDDDDD · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D8> - выражение со значением от нуля до 255
DDDDDDDD - байт непосредственных данных
Установка признаков:
S Z OF AC MF P - CY
+ + - 0 - + 1 0

6.3.3. Команда ANX.
Данная команда выполняет поразрядное логическое
умножение содержимого ячейки памяти и аккумулятора. Результат
записывает в ячейку памяти.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 00010000 · ANX · M(HL) <= · 3 · 10 ·
· · · M(HL) AND A · · ·
·+ 00111000 · RS ANX · M(H1L1) <= · 4 · 14 ·
· 00010000 · · M(H1L1) AND A· · ·
·+ 00101000 · MB ANX · M1(HL) <= · 4 · 14 ·
· 00010000 · · M1(HL) AND A · · ·
·+ 00101000 · MB RS ANX · M1(H1L1) <= · 5 · 18 ·
· 00111000 · ·M1(H1L1) AND A· · ·
· 00010000 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
+ + - - - + 1 0

6.3.4. Команда XRA.
Данная команда выполняет поразрядное сложение по модулю
2 содержимого аккумулятора и устройства-источника. Результат
записывает в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10101SSS · XRA <S> · A<=A XOR <S> · 1 · 4 ·
·+ 00111000 · RS XRA <S1> · A<=A XOR <S1>· 2 · 8 ·
· 10101SSS · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10101110 · XRA M ·A<=A XOR M(HL)· 2 · 7 ·
·+ 00111000 · RS XRA M · A<=A XOR · 3 · 11 ·
· 10101110 · · M(H1L1) · · ·
·+ 00101000 · MB XRA M1 · A<=A XOR · 3 · 11 ·
· 10101110 · · M1(HL) · · ·
·+ 00101000 · MB RS XRA M1 · A<=A XOR · 4 · 15 ·
· 00111000 · · M1(H1L1) · · ·
· 10101110 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <S> - имя регистра A B C D E H L
<S1> - имя регистра A B C D E H1 L1
SSS - шаблон битов 000 001 010 011 100 101 ... 111
Установка признаков:
S Z OF AC MF P - CY
+ + - 0 - + 1 0

6.3.5. Команда XRI.
Данная команда выполняет поразрядное сложение по модулю
2 содержимого аккумулятора и байта непосредственных данных.
Результат записывает в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11101110 · XRI <D8> · A<=A XOR <D8>· 2 · 7 ·
· DDDDDDDD · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D8> - выражение со значением от нуля до 255
DDDDDDDD - байт непосредственных данных
Установка признаков:
S Z OF AC MF P - CY
+ + - 0 - + 1 0

6.3.6. Команда XRX.
Данная команда выполняет поразрядное сложение по модулю
2 содержимого ячейки памяти и аккумулятора. Результат
записывает в ячейку памяти.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 00110000 · XRX · M(HL) <= · 3 · 10 ·
· · · M(HL) XOR A · · ·
·+ 00111000 · RS XRX · M(H1L1) <= · 4 · 14 ·
· 00110000 · · M(H1L1) XOR A· · ·
·+ 00101000 · MB XRX · M1(HL) <= · 4 · 14 ·
· 00110000 · · M1(HL) XOR A · · ·
·+ 00101000 · MB RS XRX · M1(H1L1) <= · 5 · 18 ·
· 00111000 · ·M1(H1L1) XOR A· · ·
· 00110000 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
+ + - - - + 1 0

6.3.7. Команда ORA.
Данная команда выполняет поразрядное логическое сложение
содержимого аккумулятора и устройства-источника. Результат
записывает в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10110SSS · ORA <S> · A<=A OR <S> · 1 · 4 ·
·+ 00111000 · RS ORA <S1> · A<=A OR <S1> · 2 · 8 ·
· 10110SSS · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10110110 · ORA M ·A<=A OR M(HL) · 2 · 7 ·
·+ 00111000 · RS ORA M · A<=A OR · 3 · 11 ·
· 10110110 · · M(H1L1) · · ·
·+ 00101000 · MB ORA M1 · A<=A OR · 3 · 11 ·
· 10110110 · · M1(HL) · · ·
·+ 00101000 · MB RS ORA M1 · A<=A OR · 4 · 15 ·
· 00111000 · · M1(H1L1) · · ·
· 10110110 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <S> - имя регистра A B C D E H L
<S1> - имя регистра A B C D E H1 L1
SSS - шаблон битов 000 001 010 011 100 101 ... 111
Установка признаков:
S Z OF AC MF P - CY
+ + - 0 - + 1 0

6.3.8. Команда ORI.
Данная команда выполняет поразрядное логическое сложение
содержимого аккумулятора и байта непосредственных данных.
Результат записывает в аккумулятор.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11110110 · ORI <D8> · A<=A OR <D8> · 2 · 7 ·
· DDDDDDDD · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D8> - выражение со значением от нуля до 255
DDDDDDDD - байт непосредственных данных
Установка признаков:
S Z OF AC MF P - CY
+ + - 0 - + 1 0

6.3.9. Команда ORX.
Данная команда выполняет поразрядное логическое сложение
содержимого ячейки памяти и аккумулятора. Результат записывает
в ячейку памяти.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 00100000 · ORX · M(HL) <= · 3 · 10 ·
· · · M(HL) OR A · · ·
·+ 00111000 · RS ORX · M(H1L1) <= · 4 · 14 ·
· 00100000 · · M(H1L1) OR A · · ·
·+ 00101000 · MB ORX · M1(HL) <= · 4 · 14 ·
· 00100000 · · M1(HL) OR A · · ·
·+ 00101000 · MB RS ORX · M1(H1L1) <= · 5 · 18 ·
· 00111000 · · M1(H1L1) OR A· · ·
· 00100000 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
+ + - - - + 1 0

6.3.10. Команда CMP.
Данная команда сравнивает содержимое аккумулятора и
устройства-источника посредством внутреннего вычитания
содержимого устройства-источника из содержимого аккумулятора,
оставляя эти содержимые неизменными. По результату сравнения
устанавливает триггеры признаков.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10111SSS · CMP <S> · A - <S> · 1 · 4 ·
·+ 00111000 · RS CMP <S1> · A - <S1> · 2 · 8 ·
· 10111SSS · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 10111110 · CMP M · A - M(HL) · 2 · 7 ·
·+ 00111000 · RS CMP M · A - (H1L1) · 3 · 11 ·
· 10111110 · · · · ·
·+ 00101000 · MB CMP M1 · A - M1(HL) · 3 · 11 ·
· 10111110 · · · · ·
·+ 00101000 · MB RS CMP M1 · A - M1(H1L1) · 4 · 15 ·
· 00111000 · · · · ·
· 10111110 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <S> - имя регистра A B C D E H L
<S1> - имя регистра A B C D E H1 L1
SSS - шаблон битов 000 001 010 011 100 101 ... 111
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 0

6.3.11. Команда CPI.
Данная команда сравнивает содержимое аккумулятора и
байта непосредственных данных посредством внутреннего вычитания
содержимого устройства-источника из содержимого аккумулятора,
оставляя эти содержимые неизменными. По результату сравнения
устанавливает триггеры признаков.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11111110 · CPI <D8> · A - <D8> · 2 · 7 ·
· DDDDDDDD · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <D8> - выражение со значением от нуля до 255
DDDDDDDD - байт непосредственных данных
Установка признаков:
S Z OF AC MF P - CY
+ + + + - + 1 0

6.3.12. Команда DCMP.
Данная команда сравнивает содержимое регистровой пары-
указателя, регистровой пары BC или DE и при необходимости
триггера признака переноса посредством внутреннего вычитания, не
изменяя их содержимого. По результату сравнения устанавливает
триггеры признаков Z и CY.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 11001011 · DCMP B · HL-BC · 3 · 10 ·
·+ 00111000 · RS DCMP B · H1L1-BC · 4 · 14 ·
· 11001011 · · · · ·
·+ 00101000 · CS DCMP B · HL-BC-CY · 4 · 14 ·
· 11001011 · · · · ·
·+ 00101000 · CS RS DCMP B · H1L1-BC-CY · 5 · 18 ·
· 00111000 · · · · ·
· 11001011 · · · · ·
·+ 11011101 · DCMP D · HL-DE · 3 · 10 ·
·+ 00111000 · RS DCMP D · H1L1-DE · 4 · 14 ·
· 11011101 · · · · ·
·+ 00101000 · CS DCMP D · HL-DE-CY · 4 · 14 ·
· 11011101 · · · · ·
·+ 00101000 · CS RS DCMP D · H1L1-DE-CY · 5 · 18 ·
· 00111000 · · · · ·
· 11011101 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
+ + - - - - 1 +

6.3.13. Команда RLC.
Данная команда циклически сдвигает содержимое
аккумулятора на один двоичный разряд влево, при этом триггер
признака переноса CY устанавливается по исходному содержимому
7-го разряда аккумулятора.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00000111 · RLC ·A[n+1] <= A[n]· 1 · 4 ·
· · · A[0] <= A[7] · · ·
· · · CY <= A[7] · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
- - + - - - 1 +

6.3.14. Команда RRC.
Данная команда циклически сдвигает содержимое
аккумулятора на один двоичный разряд вправо, при этом триггер
признака переноса CY устанавливается по исходному содержимому
7-го разряда аккумулятора.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00001111 · RRC ·A[n] <= A[n-1]· 1 · 4 ·
· · · A[7] <= A[0] · · ·
· · · CY <= A[0] · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
- - + - - - 1 +

6.3.15. Команда RAL.
Данная команда циклически сдвигает содержимое
аккумулятора и триггера признака переноса на один двоичный
разряд влево.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00010111 · RAL ·A[n+1] <= A[n]· 1 · 4 ·
· · · CY <= A[7] · · ·
· · · A[0] <= CY · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
- - + - - - 1 +

6.3.16. Команда RAR.
Данная команда циклически сдвигает содержимое
аккумулятора и триггера признака переноса на один двоичный
разряд вправо.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00010111 · RAR ·A[n] <= A[n+1]· 1 · 4 ·
· · · CY <= A[0] · · ·
· · · A[7] <= CY · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
- - + - - - 1 +

6.3.17. Команда CMA.
Данная команда инвертирует содержимое аккумулятора.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00101111 · CMA · A <= A · 1 · 4 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.3.18. Команда STC.
Данная команда устанавливает триггер признака переноса
CY в "1".
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00110111 · STC · CY <= 1 · 1 · 4 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
- - - - - - 1 1

6.3.19. Команда CMC.
Данная команда инвертирует содержимое триггера признака
переноса CY.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00111111 · CMC · CY <= CY · 1 · 4 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
- - - - - - 1 +

6.4. Группа команд передачи управления.
6.4.1. Команда PCHL.
Данная команда передает управление в программе по
адресу, который находится в регистровой паре HL или H1L1.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11101001 · PCHL · PC <= HL · 1 · 5 ·
·+ 00111000 · RS PCHL · PC <= H1L1 · 2 · 9 ·
· 11101001 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.4.2. Команда JMP.
Данная команда передает управление в программе по
адресу, указанному в коде команды.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11000011 · JMP <A16> · PC <= <A16> · 3 · 10 ·
· ALALALAL · · · · ·
· AHAHAHAH · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <A16> - выражение со значением от нуля до 65535
ALALALAL - младший байт адреса
AHAHAHAH - старший байт адреса

6.4.3. Команда JOF.
Данная команда проверяет состояние триггера признака
переполнения OF.
Если состояние триггера равно "1", то управление в
программе передается по адресу, указанному в коде команды.
Если состояние триггера равно "0", то управление
передается следующей команде.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 11111101 · JOF <A16> · IF (OF=1) · 3 · 10 ·
· ALALALAL · ·THEN PC<=<A16>· · ·
· AHAHAHAH · ·ELSE PC<=PC+1 · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <A16> - выражение со значением от нуля до 65535
ALALALAL - младший байт адреса
AHAHAHAH - старший байт адреса

6.4.4. Команды условного перехода.
Команда условного перехода проверяет состояние триггера
признака, определенного именем команды.
Если состояние триггера удовлетворяет условию,
определенному именем команды, то управление в программе
передается по адресу, который указан в коде команды. В
противном случае управление передается следующей команде.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11JJJ010 · <J> <A16> · IF (COND) · 3 · 10 ·
· ALALALAL · ·THEN PC<=<A16>· · ·
· AHAHAHAH · ·ELSE PC<=PC+1 · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <J> - имя команды JNZ JZ JNC JC JPO JPE JP JM
<COND> - условие Z=0 Z=1 CY=0 CY=1 P=0 P=1 S=0 S=1
JJJ - шабл. битов 000 001 010 011 100 101 110 111
ALALALAL - младший байт адреса
AHAHAHAH - старший байт адреса

6.4.5. Команда CALL.
Данная команда передает управление подпрограмме по
адресу, указанному в коде команды, при этом сохраняет адрес
возврата из подпрограммы, т.е. адрес следующей команды в стеке.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11001101 · CALL <A16> · (SP-1) <= · 5 · 17 ·
· · · PC [8-15] · · ·
· ALALALAL · · (SP-2) <= · · ·
· · · PC [0-7] · · ·
· AHAHAHAH · · SP <= SP-2 · · ·
· · · PC <= <A16> · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <A16> - выражение со значением от нуля до 65535
ALALALAL - младший байт адреса
AHAHAHAH - старший байт адреса

6.4.6. Команды условного вызова подпрограммы.
Команда условного вызова подпрограммы проверяет
состояние триггера признака, определенного именем команды.
Если состояние триггера удовлетворяет условию,
определенному именем команды, то управление передается
подпрограмме по адресу, который указан в коде команды, при этом
адрес следующей команды сохраняется в стеке. В противном случае
управление передается следующей команде.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11CCC100 · <C> <A16> · IF (COND) · 5 · 17 ·
· ALALALAL · · THEN · · ·
· AHAHAHAH · · (SP-1) <= · · ·
· · · PC [8-15] · · ·
· · · (SP-2) <= · · ·
· · · PC [0-7] · · ·
· · · SP <= SP-2 · · ·
· · · PC <= <A16> · · ·
· · · ELSE · 3 · 11 ·
· · · PC<=PC+1 · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <C> - имя команды CNZ CZ CNC CC CPO CPE CP CM
<COND> - условие Z=0 Z=1 CY=0 CY=1 P=0 P=1 S=0 S=1
CCC - шабл. битов 000 001 010 011 100 101 110 111
ALALALAL - младший байт адреса
AHAHAHAH - старший байт адреса

6.4.7. Команда RET.
Данная команда осуществляет возврат из подпрограммы по
адресу, указанному в верхушке стека.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11001001 · RET · PC [0-7] <= · 3 · 10 ·
· · · (SP) · · ·
· · · PC [8-15] <= · · ·
· · · (SP+1) · · ·
· · · SP <= SP+2 · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.4.8. Команды условного возврата из подпрограммы.
Команда условного возврата из подпрограммы проверяет
состояние триггера признака, определенного именем программы.
Если состояние триггера удовлетворяет условию,
определенному именем команды, то управление передается по
адресу, который указан в верхушке стека. В противном случае
управление передается следующей команде.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11RRR000 · <R> · IF (COND) · 3 · 11 ·
· · · THEN · · ·
· · · PC [0-7] <= · · ·
· · · (SP) · · ·
· · · PC [8-15] <= · · ·
· · · (SP+1) · · ·
· · · SP <= SP+2 · · ·
· · · ELSE · 1 · 5 ·
· · · PC<=PC+1 · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <R> - имя команды RNZ RZ RNC RC RPO RPE RP RM
<COND> - условие Z=0 Z=1 CY=0 CY=1 P=0 P=1 S=0 S=1
RRR - шабл. битов 000 001 010 011 100 101 110 111

6.4.9. Команда RST.
Данная команда передает управление подпрограмме
обработки прерывания по адресу, равному номеру прерывания,
умноженному на 8, при этом сохраняется адрес возврата из
подпрограммы, т.е. адрес следующей команды в стеке.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11NNN111 · RST <N> · (SP-1) <= · 3 · 11 ·
· · · PC [8-15] · · ·
· · · (SP-2) <= · · ·
· · · PC [0-7] · · ·
· · · SP <= SP-2 · · ·
· · · PC <= <N>*8 · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
где <N> - номер прерывания 0 1 2 3 4 5 6 7
NNN - шаблон битов 000 001 010 011 100 101 110 111

6.5. Группа специальных команд.
6.5.1. Команда NOP.
Данная команда выполняет холостую операцию микро-
процессора.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 00000000 · NOP · PC <= PC+1 · 1 · 4 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.5.2. Команда EI.
Данная команда устанавливает триггер разрешения
прерываний в состояние "1", тем самым разрешает прерывание
микропроцессора после выполнения следующей команды.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11111011 · EI · INTE <= 1 · 1 · 4 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.5.3. Команда DI.
Данная команда устанавливает триггер разрешения
прерываний в состояние "0", тем самым запрещает прерывание
микропроцессора после ее выполнения.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 11110011 · DI · INTE <= 0 · 1 · 4 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.5.4. Команда HLT.
Данная команда переводит микропроцессор в состояние
останова, из которого он может быть выведен по прерыванию, если
триггер разрешения прерываний установлен в "1" или по сигналу
"Сброс" микропроцессора.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
· 01110110 · HLT · останов · 2 · 7 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

6.5.5. Команда SMF0.
Данная команда устанавливает триггер переключения банка
памяти в состояние "0".
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 00111000 · MB SMF0 · MF <= 0 · 2 · 8 ·
· 00000000 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
- - - - 0 - 1 -

6.5.6. Команда SMF1.
Данная команда устанавливает триггер переключения банка
памяти в состояние "1".
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 00111000 · MB SMF1 · MF <= 1 · 2 · 9 ·
· 01111111 · · · · ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝
Установка признаков:
S Z OF AC MF P - CY
- - - - 1 - 1 -

6.5.7. Префиксы MB, RS, CS.
Префиксы воздействуют только на следующую за ними
команду. Последовательность префиксов не отменяет воздействия
каждого префикса на следующую команду.
Префикс MB на время выполнения следующей за ним команды
обращения к памяти через регистровую пару-указатель изменяет
признак MF на противоположный. После выполнения команды,
признак MF восстанавливается.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 00101000 · MB · · 1 · 4 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

Префикс RS устанавливает для использования в следующей
команде регистры H1 и (или) L1 вместо регистров H и (или) L.
╔═══════════╤═══════════════════╤══════════════╤═══════╤═══════╗
· · · · · ·
· Код · Преф. команда · Алгоритм · Циклы · Такты ·
· · · · · ·
╠═══════════╪═══════════════════╪══════════════╪═══════╪═══════╣
·+ 00111000 · RS · · 1 · 4 ·
╚═══════════╧═══════════════════╧══════════════╧═══════╧═══════╝

Префикс CS изменяет алгоритм выполнения таких команд,
как DAD, DSUB и DCMP. Код и время выполнения соответствуют коду
и времени выполнения команды префикса MB.

6.6. Условные обозначения и сокращения.
При описании системы команд знаком "+" отмечены команды,
которых нет в системе команд микропроцессора КР580ВМ80А.
Команды, не отмеченные знаком "+", полностью совпадают с
командами микропроцессора КР580ВМ80А и подробно описаны в
И13.480.019 ТО.

Основные сокращения:
<= - переслать;
<=> - обмен содержимым;
< > - содержимое;
( ) - по адресу;
A - аккумулятор;
A [n] - бит n аккумулятора;
SP - указатель стека;
PC - счетчик команд;
PSW - регистр признаков;
Преф. - префикс;
D, D1 - источник;
S, S1 - приемник;
HIGH - старший байт;
LOW - младший байт;
AND - логическая операция И;
OR - логическая операция ИЛИ;
XOR - логическая операция сложения по модулю 2;
IF - если;
THEN - то;
ELSE - иначе.

Sign
in to add a comment

©2008 Google - Code Home -
Terms of Service - Privacy Policy - Site Directory