Мнемокод | Название | Действия |
Флаги
|
Безадресные команды [Код 0]
|
NOP | Нет операции | PCL := PCL + 1 |
|
RET | Возврат из подпрограммы | PCL := M(SS.SPL); Inc(SPL);
CS := M(SS.SPL)[1:0]; Inc(SPL)
|
|
IRET | Возврат из прерывания | PCL := M(SS.SPL); Inc(SPL);
PSW[5:0].CS := M(SS.SPL);
Inc(SPL)
|
|
EI | Разрешить прерывание | FI := 1 |
|
DI | Запретить прерывание | FI := 0 |
|
RR | Сдвиг аккумулятора правый циклический |
Acc[7:0] := Acc[0].Acc[7:1];
FC := Acc[0]
|
|
RL | Сдвиг аккумулятора левый циклический |
Acc[7:0] := Acc[6:0].Acc[7];
FC := Acc[7]
|
|
RRC | Сдвиг аккумулятора правый циклический через перенос |
Acc[7:0] := FC.Acc[7:1];
FC := Acc[0]
|
|
RLC | Сдвиг аккумулятора левый циклический через перенос |
Acc[7:0] := Acc[6:0].FC;
FC := Acc[7]
|
|
NOTA | Инверсия аккумулятора | Acc := NOT Acc |
|
INCA | Инкремент аккумулятора | Acc := Acc + 1 |
|
DECA | Декремент аккумулятора | Acc := Acc - 1 |
|
SWAPA | Обмен тетрадами аккумулятора |
Acc[7:4] <==> Acc[3:0] |
|
DAA | Десятичная коррекция сложения |
(см. комментарий
после таблицы) |
|
DSA | Десятичная коррекция вычитания |
(см. комментарий
после таблицы) |
|
MOVSP | Загрузка SPL | SPL := Acc |
|
MOVAPSW | Прочитать PSW | Acc := PSW |
|
MOVASR | Прочитать SR | Acc := SR |
|
MOVSRA | Загрузить SR | SR := Acc |
|
HLT | Стоп | Прекратить командные циклы |
|
Цикл [Код 1]
|
DJRNZ Rc, L |
Цикл (Rc - один из регистров {R0, R1, R2, R3}) |
Rc := Rc - 1;
if Rc <> 0 then goto L
|
|
Команды условных переходов [Код 2 or 3]
|
JNZ L | Переход, если не ноль |
if Z=0 then CS.PCL := CR[9:0] |
|
JNC L | Переход, если не перенос |
if C=0 then CS.PCL := CR[9:0] |
|
JNN L | Переход, если не отрицательно |
if N=0 then CS.PCL := CR[9:0] |
|
JNO L | Переход, если не переполнение |
if O=0 then CS.PCL := CR[9:0] |
|
JZ L | Переход, если ноль |
if Z=1 then CS.PCL := CR[9:0] |
|
JC L | Переход, если перенос |
if C=1 then CS.PCL := CR[9:0] |
|
JN L | Переход, если отрицательно |
if N=1 then CS.PCL := CR[9:0] |
|
JO L | Переход, если переполнение |
if O=1 then CS.PCL := CR[9:0] |
|
Команды безусловной передачи управления [Код 4]
|
JMP L | Безусловный переход |
CS.PCL := CR[9:0] |
|
CALL L | Вызов подпрограммы |
Dec(SPL);
M(SS.SPL)[1:0] := CS;
Dec(SPL); M(SS.SPL) := PCL;
CS.PCL := CR[9:0]
|
|
INT v | Вызов прерывания
(v = CR[2:0] – вектор прерывания) |
Dec(SPL);
M(SS.SPL) := PSW[5:0].CS;
Dec(SPL); M(SS.SPL) := PCL;
PCL := M(2v);
CS := M(2v+1)[1:0]; FI := 0
|
|
Регистровые команды [Код 5] (Для команд ADC и SUBB – [Код F])
|
ADD pR | Сложение | Acc := Acc + R* |
|
ADDC pR | Сложение с переносом | Acc := Acc + R* + C |
|
SUB pR | Вычитание | Acc := Acc - R* |
|
SUBB pR | Вычитание с заёмом | Acc := Acc - R* - C |
|
MUL pR | Умножение | R7.Acc := Acc X R* |
|
DIV pR | Деление | Acc := Acc : R* |
|
AND pR | Конъюнкция | Acc := Acc & R* |
|
OR pR | Дизъюнкция | Acc := Acc V R* |
|
XOR pR | Неравнозначность | Acc := Acc XOR R* |
|
CMP pR | Сравнение | R* – Acc |
|
RD pR | Чтение | Acc := R* |
|
WR pR | Запись | R* := Acc |
|
XCH pR | Обмен | R* <==> Acc |
|
PUSH R | Поместить в стек | Dec(SPL); M(SPL) := R |
|
POP R | Извлечь из стека | R := M(SPL); Inc(SPL) |
|
INC R | Инкремент | R := R + 1 |
|
DEC R | Декремент | R := R - 1 |
|
NOT R | Инверсия | R := NOT R |
|
MOV Rr, Rt | Копирование |
Rr := Rt |
|
Команды с ячейками ОЗУ [Код 6 or 7]
Код 6 – прямая адресация (A), 7 – непосредственная (#A)
|
ADD A | Сложение | Acc := Acc + DD |
|
ADDC A | Сложение с переносом | Acc := Acc + DD + FC |
|
SUB A | Вычитание | Acc := Acc - DD |
|
SUBB A | Вычитание с заёмом | Acc := Acc - DD - FC |
|
MUL A | Умножение | R7.Acc := Acc X DD |
|
DIV A | Деление | Acc := Acc : DD |
|
AND A | Конъюнкция | Acc := Acc & DD |
|
OR A | Дизъюнкция | Acc := Acc V DD |
|
XOR A | Неравнозначность | Acc := Acc XOR DD |
|
CMP A | Сравнение | DD – Acc |
|
RD A | Чтение | Acc := DD |
|
WR A | Запись | M(A) := Acc |
|
XCH A | Обмен | M(A) <==> Acc |
|
INC A | Инкремент | M(A) := M(A) + 1 |
|
DEC A | Декремент | M(A) := M(A) - 1 |
|
NOT A | Инверсия | M(A) := NOT DD |
|
Битовые команды 1 [Код 8]
|
CB A,b | Сбросить бит | M(A)[b] := 0 |
|
SB A,b | Установить бит | M(A)[b] := 1 |
|
Битовые команды 2 [Код 9]
|
SBC A,b | Пропустить следующую команду, если бит сброшен |
if M(A)[b]=0 then
PCL := PCL + 2 |
|
SBS A,b | Пропустить следующую команду, если бит сброшен |
if M(A)[b]=1 then
PCL := PCL + 2 |
|
Битовые команды 3 [Код A or B]
|
CBI a,b | Сбросить бит | RIO(a)[b] := 0 |
|
SBI a,b | Установить бит | RIO(a)[b] := 1 |
|
NBI a,b | Инвертировать бит | RIO(a)[b] := NOT RIO(a)[b] |
|
SBIC A,b | Пропустить следующую команду, если бит сброшен |
if RIO(a)[b]=0 then PCL := PCL + 2 |
|
SBIS A,b | Пропустить следующую команду, если бит установлен |
if RIO(a)[b]=1 then PCL := PCL + 2 |
|
SBISC A,b | Пропустить следующую команду, если бит установлен
и сбросить бит |
if RIO(a)[b]=1 then (PCL := PCL + 2
RIO(a)[b] := 0) |
|
Команды ввода/вывода [Код C]
|
IN a | Ввод | Acc := RIO(a) |
|
OUT a | Вывод | RIO(a) := Acc |
|