| Мнемокод | Название | Действия |
Флаги
|
| Безадресные команды [Код 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 |
|