Набор команд МП КР 580 содержит 78 базовых команд, и в целом включает 244 различные их модификации. Все команды подразделяются на 5 функционально специализированных групп:
- Команды передачи данных:
- Команды арифметических операций;
- Команды логических операций;
- Команды передачи управления;
- Команды стека, ввода вывода, управления.
Набор команд МП К580
Фор-мат | Время тактов | Код | Мнемокод | Наименование команды | Операция | Признаки | ||||||||||||||||
S | Z | AC | P | CY | ||||||||||||||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ||||||||||||
|
| Команды передачи данных |
|
|
| |||||||||||||||||
1 | 5 | * | MOV R1,R2 | Пересылка данных из регистра в регистр | (R1)←(R2) | – | – | – | – | – | ||||||||||||
1 | 7 | * | MOV R,M | Пересылка данных из памяти в регистр | (R)←((H,L)) | – | – | – | – | – | ||||||||||||
1 | 7 | * | MOV M,R | Пересылка данных из регистра в память | ((H,L))← (R) | – | – | – | – | – | ||||||||||||
2 | 7 | * | MVI R,B2 | Пересылка непосредственных данных в регистр | (R)←В2 | – | – | – | – | – | ||||||||||||
2 | 10 | * | MVI М,B2 | Пересылка непосредственных данных в память | ((H,L))←В2 | – | – | – | – | – | ||||||||||||
3 | 10 | * | LXI RR, B2B3 | Непосредственная загрузка регистровой пары | (RRH) ←B3 (RRL) ←В2 | – | – | – | – | – | ||||||||||||
3 | 13 | 3A | LDA B2B3 | Прямая загрузка А-регистра | (А)←((В3,В2)) | – | – | – | – | – | ||||||||||||
1 | 7 | * | LDAX RR | Косвенная загрузка А-регистра | (А)←((RR)) | – | – | – | – | – | ||||||||||||
1 | 7 | * | STAX RR | Косвенное запоминание А-регистра | ((RR))← (А) | – | – | – | – | – | ||||||||||||
3 | 16 | 2А | LHID В2ВЗ | Прямая нагрузка H-пары регистров | (L) ← ((B2B3)) (H)←((B2B3)+1) | – | – | – | – | – | ||||||||||||
3 | 13 | 32 | STA В2В3 | Прямое запоминание содержимого А-регистра | ((B2B3)) ←A | – | – | – | – | – | ||||||||||||
3 | 16 | 22 | SHLDY В2В3 | Прямое запоминание содержимого Н-пары регистров | ((B2B3)) ← (L) ((B2B3+1))←(H) | – | – | – | – | – | ||||||||||||
1 | 4 | EВ | XCHG | 0бмен между Н- и D-парами регистров | (H)↔(D) (L) ↔ (E) | – | – | – | – | – | ||||||||||||
|
|
| Команды арифметических операций |
|
|
| ||||||||||||||||
1 | 4! | * | ADDR | Сложение содержимого А-регистра | (A)← (A) + (R) | + | + | + | + | + | ||||||||||||
1 | 7 | 86 | ADUM | Сложение содержимых ячейки памяти и А-регистра | (A) ← (A) + ((H,L)) | + | + | + | + | + | ||||||||||||
2 | 7 | С6 | ADI B2 | Сложение непосредственных данных и содержимого А-регистра | (A) ← (A)-(B2) | + | + | + | + | + | ||||||||||||
1 | 4 | * | ADC R | Сложение содержимых регистра и А-регистра с переносом | (А) ← (А) + (R) + (CY) | + | + | + | + | + | ||||||||||||
1 | 7 | 8E | ADC M | Сложение содержимых ячейки памяти и А-регистра с переносом | А) ← (А)+ ((H,L)) + (CY) | + | + | + | + | + | ||||||||||||
2 | 7 | CE | ACI B2 | Сложение непосредственных данных н А-регистра с переносом | А) – (А) + (B2) + (CY) | + | + | + | + | + | ||||||||||||
1 | 5 | * | INR R | Инкрементирование содержимого регистра | (R)← (R)+1 | + | + | + | + | – | ||||||||||||
1 | 10 | 34 | INR M | Инкрементирование содержимого ячейки памяти | ((H,L))← ((H,L))+l | + | + | + | + | – | ||||||||||||
1 | 5 | * | INX RR | Инкрементирование содержимого регистровой пары | (RR) ← (RR) + 1 | – | – | – | – | – | ||||||||||||
1 | 5 | * | DCR R | Декрементирование содержимого регистра | (R) ← (R)-1 | + | + | + | + | – | ||||||||||||
1 | 10 | 35 | DCR M | Декрементирование содержимого ячейки памяти | ((H,L)) ← ((H,L))-1 | + | + | + | + | – | ||||||||||||
1 | 5 | * | DCX RR | Декрементирование содержимого регистровой пары | (RR)← (RR)-1 | – | – | – | – | – | ||||||||||||
1 | 4 | * | SUB R | Вычитание содержимого регистра из содержимого А-регистра | (A) ← (A) – (R) | + | + | + | + | + | ||||||||||||
1 | 7 | 96 | SUB M | Вычитание содержимого ячейки памяти из содержимого А-регистра | (A) ← (A)-((H,L)) | + | + | + | + | + | ||||||||||||
2 | 7 | D6 | SUI B2 | Вычитание непосредственных данных из содержимого А-регистра | (A) ← (A)-(B2) | + | + | + | + | + | ||||||||||||
1 | 4 | * | SBB R | Вычитание содержимого регистра из содержимого А-регистра с заемом | (A)← (A)-(R)-(CY) | + | + | + | + | + | ||||||||||||
1 | 7 | 9E | SBB M | Вычитание ячейки памяти из содержимого А-регистра с заемом | (А)← (А) -((H,L))-(CY) | + | + | + | + | + | ||||||||||||
2 | 7 | DE | SBI B2 | Вычитание непосредственных данных ис содержимого А-регистра с заемом | (А)← (А)-(B2)-(CY) | + | + | + | + | + | ||||||||||||
I | 10 | * | DAD RR | Сложение содержимых регистровой пары и Н-пары регистров | (H,L)← (H,L) + (RR) | – | – | – | – | + | ||||||||||||
| и |
|
| Команды логических oneрации |
|
|
|
|
| |||||||||||||
1 | 4 | * | ANA R | Поразрядное И над содержимым регистра и А- регистра | (A) ← (A)۸ (R) | + | + | 0 | + | 0 | ||||||||||||
1 | 7 | A6 | ANA M | Поразрядное И над содержимым ячейки памяти и А-регистра | (A) ← (A) ۸ ((H,L)) | + | + | 0 | + | 0 | ||||||||||||
2 | 7 | E6 | ANI B2 | Поразрядное И над непосредственными данными и содержимым А-регистра | (A) ← (A) ۸ (B2) | + | + | 0 | + | 0 | ||||||||||||
1 | 4 | * | CMP R | ‘Сравнение содержимых регистра и А-регистра | Если (А) -(RM)=0,то (CY) = 0, (Z)=l. Если (A) -(RM)>0, то (CY) = 0,(Z) = 0, Если (А) -(RM)<0, то (CY)=1,(Z)=0 | + | + | + | + | + | ||||||||||||
1 | 7 | BE | CMP M | Сравнение содержимых ячейки памяти и А-регистра | + | + | + | + | + | |||||||||||||
2 | 7 | ОЕ | CPI B2 | Сравнение непосредственных данных с содержимым А-регистра | + | + | + | + | + | |||||||||||||
1 | 4 | 2F | CMA | Дополнение содержимого А-регистра | (A) ← (A) | – | – | – | – | – | ||||||||||||
1 | 4 | * | XRA R | Поразрядное Исключающее ИЛИ над содержимым регистра и А-регистра | (A) ← (A) ۷ (R) | + | + | 0 | + | 0 | ||||||||||||
1 | 7 | AE | XRA M | Поразрядное Исключающее ИЛИ над содержимым ячейки памяти и А-регистра | (A)← (A) ۷ ((H,L))> | + | + | 0 | + | 0 | ||||||||||||
2 | 7 | ЕЕ | XR1 B2 | Поразрядное Исключающее ИЛИ над содержимым А-регистра и непосредственными данными | (A)← (A) ۷ (B2) | + | + | 0 | + | 0 | ||||||||||||
1 | 4 | * | ORA R | Поразрядное ИЛИ над содержимым регистра и А-регистра | (A)← (A) ۷ (R) | + | + | 0 | + | 0 | ||||||||||||
1 | 7 | B6 | ORA M | Поразрядное ИЛИ над содержимым ячейки памяти и А-регистра | (A)← (A) ۷ ((Н,L)) | + | + | 0 | + | 0 | ||||||||||||
2 | 7 | F6 | ORI B2 | Поразрядное ИЛИ над непосредственными данными и содержимым А-регистра | (A) ← (A) ۷ (B2) | + | + | 0 | + | 0 | ||||||||||||
1 | 4 | 07 | RLC | Циклический сдвиг влево содержимого А~регистра | (Аi-1) ← (Аi) (Ao) ← (A7) (СY) ← (A7) | – | – | – | – | + | ||||||||||||
1 | 4 | 17 | RAL | Циклический, сдвиг влево содержимого А-регистра через перенос | (Аi-1) ← (Аi) (Ao) ← (CY) (СY) ← (A7) | – | – | – | – | + | ||||||||||||
1 | 4 | OF | RRC | Циклический сдвиг вправо содержимого А-регистра | (Ai)← (Ai+1) (A0) ← (A7) (CY)← (A0) | – | – | – | – | + | ||||||||||||
2 | 4 | 37 | STC | Установка в 1 признака переноса | (CY) ← 1 | – | – | – | – | 1 | ||||||||||||
|
|
|
| Команды передача управления |
|
|
|
|
| |||||||||||||
3 | 10 | C3 | JMP В2BЗ | Безусловный переход | (PC) ← (B2,B3) | – | – | – | – | – | ||||||||||||
3 | 10 | DA | JC B2B3 | Переход, если перенос | Если условие верно, то (PC) ← (B2,B3) иначе (PC) ←(PC)+3 | – | – | – | – | – | ||||||||||||
3 | 10 | D2 | JNC B2B3 | Переход, если не перенос | – | – | – | – | – | |||||||||||||
3 | 10 | CA | JZ B2B3 | Переход, если нуль |
| – | – | – | – | |||||||||||||
3 | 10 | C2 | JNZ B2B3 | Переход, если не нуль |
|
|
|
|
| |||||||||||||
3 | 10 | F2 | JP B2B3 | Переход, если плюс |
|
|
|
|
| |||||||||||||
3 | 10 | FA | JM B2B3 | Переход, если минус |
|
|
|
|
| |||||||||||||
3 | 10 | EA | JPE B2B3 | Переход, если паритет четный |
|
|
|
|
| |||||||||||||
3 | 10 | E2 | JPO B2B3 | Переход, если паритет не четный |
|
|
|
|
| |||||||||||||
3 | 17 | CD | CALL B2B3 | Безусловный вызов подпрограммы | ((SP)-1)←(PCH), ((SP)-2)←(PCL), (SP) ← (SP)-2 (PC) ←(B2B3) |
|
|
|
|
| ||||||||||||
3 | 11/17 | DC | CC B2B3 | Вызов подпрограммы, если перенос | Если условие верно, то ((SP)-1)←(PCH), ((SP)-2)←(PCL), (SP) ← (SP)-2 (PC) ←(B2B3), иначе (PC) ←(PC)+3 |
|
|
|
|
| ||||||||||||
3 | 11/17 | D4 | CNC B2B3 | Вызов подпрограммы, если не перенос |
|
|
|
|
| |||||||||||||
3 | 11/17 | CC | CZ B2B3 | Вызов подпрограммы, если нуль |
|
|
|
|
| |||||||||||||
3 | 11/17 | C4 | CNZ B2B3 | Вызов подпрограммы, если не нуль |
|
|
|
|
| |||||||||||||
3 | 11/17 | F4 | CP B2B3 | Вызов подпрограммы, если плюс |
|
|
|
|
| |||||||||||||
3 | 11/17 | FC | CM B2B3 | Вызов подпрограммы, если минус |
|
|
|
|
| |||||||||||||
3 | 11/17 | EC | CPE B2B3 | Вызов подпрограммы, если паритет четный |
|
|
|
|
| |||||||||||||
3 | 11/17 | E4 | CPO B2B3 | Вызов подпрограммы, если паритет не четный |
|
|
|
|
| |||||||||||||
1 | 10 | C9 | RET | Возврат из подпрограммы | (PCL) ←((SP)), (PCH)←((SP)+1) (SP) ←(SP)+2 |
|
|
|
|
| ||||||||||||
1 | 5/11 | D8 | RC | Возврат из подпрограммы, если перенос | Если условие верно, то (PCL) ← ((SP)), (РСН) ← ((SP)+1), (SP) ← (SP) + 2, иначе (PC) +- (PC) + 1 |
|
|
|
|
| ||||||||||||
1 | 5/11 | D0 | RNC | Возврат из подпрограммы если не перенос |
|
|
|
|
| |||||||||||||
1 | 5/11 | C8 | RZ | Возврат, если 0 | – | – | – | – | – | |||||||||||||
1 | 5/11 | CO | RNZ | Возврат, если не 0 | – | – | – | – | – | |||||||||||||
1 | 5/11 | FO | RP | Возврат, если плюс | – | – | – | – | – | |||||||||||||
1 | 5/11 | F8 | RM | Возврат, если минус | – | – | – | – | – | |||||||||||||
1 | 5/11 | E8 | RPF | Возврат, если четно | – | – | – | – | – | |||||||||||||
1 | 5/11 | E0 | RPO | Возврат, если не четно | – | – | – | – | – | |||||||||||||
1 | 11 | C7 | RSTO | Рестарт по 0-му уровню | ((SP)-1)← (PCH), ((SP)-2)← (PСL). (SP) ← (SP) – 2, (PC) ← 8*N | – | – | – | – | – | ||||||||||||
1 | 11 | CF | RST1 | Рестарт по 1-му уровню | – | – | – | – | – | |||||||||||||
1 | 11 | D7 | RST2 | Рестарт по 2-му уровню | – | – | – | – | – | |||||||||||||
1 | 11 | DF | RST3 | Рестарт по 3-му уровню | – | – | – | – | – | |||||||||||||
1 | 11 | E7 | RST4 | Рестарт по 4-му уровню | – | – | – | – | – | |||||||||||||
1 | 11 | EA | RST5 | Рестарт по 5-му уровню | – | – | – | – | – | |||||||||||||
1 | 11 | F7 | RST6 | Рестарт по 6-му уровню | – | – | – | – | – | |||||||||||||
1 | 11 | FF | RST7 | Рестарт по 7-му уровню | – | – | – | – | – | |||||||||||||
1 | 5 | E9 | PCHL | Запись содержимого Н-нары регистров | (PCH) ← (H) (PCL) ← (L) | – | – | – | – | – | ||||||||||||
|
|
|
| Команды стека, ввода-вывода и управления |
|
|
|
|
|
| ||||||||||||
1 | 11 | * | PUSH RR | Запись в стек содержимого регистровой пары | ((SP)-1← (RRH), ((SP)-2) ← (RRL), (SP)← (SP)-2 | – | – | – | – | – | ||||||||||||
1 | 11 | F5 | PUSH PSW | Запись в стек слова состояния процессора | ((SP)-1)← (A), (SP)← (SP)-2, ((SP)-2)← F | – | – | – | – | – | ||||||||||||
1 | 11 | * | POPRR | Чтение содержимого регистровой пары из стека | (RRL)← ((SP)) (RRH)← -((SP)+1), (SP) ← (SP) + 2 | – | – | – | – | – | ||||||||||||
1 | 11 | Fl | POP PSW | Чтение из стека слова состояния процессора | (F) ← ((SP)), (A) ← ((SP)+1), (SP) ← (SP) + 2 | – | – | – | – | – | ||||||||||||
1 | 18 | E3 | XTHL | Обмен между вершиной стека и Н-парой регистров | (L)← ((SP)), (H)← ((SP)+1) (SP) ← (H,L) | – | – | – | – | – | ||||||||||||
1 | 5 | F9 | SPHL | Запись содержимого Н пары регистров в указатель стека | (SP) ← (H,L) | – | – | – | – | – | ||||||||||||
2 | 10 | DB | IN B2 | Ввод данных | (A) ← ((B2)) | – | – | – | – | – | ||||||||||||
2 | 10 | D3 | OUT B2 | Вывод данных | ((B2)) ← (A) | – | – | – | – | – | ||||||||||||
1 | 4 | FB | E1 | Разрешение прерывания | (INTE) ← 1 | – | – | – | – | – | ||||||||||||
1 | 4 | F3 | DI | Запрет прерывания | (INTE) ← 0 | – | – | – | – | – | ||||||||||||
1 | 7 | 76 | HLT | Останов | (PC) ← (PC) +1 | – | – | – | – | – | ||||||||||||
1 | 4 | 00 | NOP | Пустая операция | (PC)←(РС) + 1 | – | – | – | – | – |
Коды команд MOV RM1,RM2
RMl | RM2 | |||||||
В | С | D | E | H | L | M | A | |
В | 401 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
С | 48 | 49 1 | 4A | 4B | 4C | 4D | 4E | 4F |
D | 50 | 51 | 521 | 53 | 54 | 55 | 56 | 57 |
E | 58 | 59 | 5A | 5B1 | 5C | 5D | 5E | 5F |
H | 60 | 61 | 62 | 63 | 641 | 65 | 66 | 67 |
L | 68 | 69 | 6A | 6B | 6C | 6D1 | 6E | 6F |
M | 70 | 71 | 72 | 73 | 74 | 75 | 762 | 77 |
A | 78 | 79 | 7A | 7B | 7C | 7D | 7E | 7F1 |
Коды команд с регистрами
Команда | RM | |||||||
В | С | D | E | H | L | M | A | |
ADDRM | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 |
ADCRM | 88 | 89 | 8A | 8B | 8C | 8D | 8E | 8F |
SUBRM | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
SBBRM | 98 | 99 | 9A | 9B | 9C | 9D | 9E | 9F |
ANARM | А0 | Al | A2 | A3 | A4 | A5 | A6 | A7 |
XRARM | A8 | A9 | AA | AB | AC | AD | AE | AF |
ORARM | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 |
CMPRM | B8 | B9 | BA | BB | ВС | BD | BE | BF |
INRRM | 04 | 0С | 14 | 1C | 24 | 2C | 34 | 3C |
DCRRM | 05 | 0D | 15 | 1D | 25 | 2D | 35 | 3D |
MVIRM | 06 | 0E | 16 | 1E | 26 | 2E | 36 | 3E |
Коды команд с регистровыми парами
Команда | RB | |||
B | D | H | P | |
LXI RR | 01 | 11 | 21 | 31 |
LDAX RR | OA | 1A | – | – |
STAXRR | 02 | 12 | – | – |
INXRR | 03 | 13 | 23 | 33 |
DCXRR | 0B | 1B | 2B | 3B |
DADRR | 09 | 19 | 29 | 39 |
PUSH RR | C5 | D5 | E5 | – |
POP | C1 | D1 | E1 | – |