Для кодирования команд в системе команд микропроцессора 8080 использованы практически все возможные варианты 8-разрядного кода команд, то есть команд чуть меньше 256.
По функциональному назначению их можно разделить на 6 основных групп.
· Команды пересылок – обеспечивают операции перемещения однобайтных или двухбайтных операндов между регистрами процессора, памятью данных или памятью программ;
· Команды передач управления – обеспечивают безусловные и условные ветвления в программе.
· Команды организации подпрограмм – обеспечивают условные и безусловные вызовы подпрограмм и возвраты из подпрограмм.
· Команды арифметических, логических и сдвиговых операций среди которых арифметические сложение и вычитание, а также логические “И”, “ИЛИ”, “НЕ”, “Исключающее ИЛИ”, сдвига вправо и влево, сравнения.
· Команды управления стеком – обеспечивают установку указателя стека, а также операции чтения и записи стека.
· Команды ввода, вывода и управления состоянием процессора – обеспечивают операции обмена байтами процессора с регистрами интерфейсов внешних устройств, а также управление триггером разрешения прерываний процессора, перевод процессора в состояние останова и отсутствие операций.
Полный список команд с выделением групп представлен в табл. 1.6, а перечень использованных для описания команд сокращений представлен в табл. 1.7. Буквы в заголовке табл. 1.6 обозначают: Ф – формат команды, выраженный количеством байтов команды; Т – количество машинных тактов в команде; Ц – количество машинных циклов в команде.
Таблица 1.6
Список команд микропроцессора 8080
| Мнемокод | Действия | F | Название | Код | Ф | Т | Ц |
| Команды пересылок | |||||||
| MOV r1,r2 | (r1)(r2) | – | MOVe Register to Regist | 01DDDSSS | |||
| MOV M,r | M(HL)(r) | – | MOVe Register to Memory | 01110SSS | |||
| MOV r,M | (r)M(HL) | – | MOVe Memory to Register | 01DDD110 | |||
| MVI r,d8 | (r)d8 | – | MOVe Immediate Register | 00DDD110 | |||
| MVI M,d8 | M(HL)d8 | – | MOVe Immediate Memory | ||||
| STA adr | M(adr)(A) | – | STore A direct | ||||
| LDA adr | (A)M(adr) | – | LoaD A direct | ||||
| STAX B | M(BC)(A) | – | STore A indirect | ||||
| STAX D | M(DE)(A) | – | STore A indirect | ||||
| LDAX B | (A)M(BC) | – | LoaD A indirect | ||||
| LDAX D | (A)M(DE) | – | LoaD A indirect | ||||
| LXI B,d16 | (BC)d16 | – | Load Immediate Register pair B&C | ||||
| LXI D,d16 | (DE)d16 | – | Load Immediate register pair D&E | ||||
| LXI H,d16 | (HL)d16 | – | Load Immediate register pair H&L | ||||
| LXI SP,d16 | (SP)d16 | – | Load Immediate stack pointer | ||||
| SHLD adr | M(adr)(L) M(adr+1)(H) | – | Store H&L Direct | ||||
| LHLD adr | (L)M(adr) (H)M(adr+1) | – | Load H&L Direct | ||||
| XCHG | (HL)«(DE) | – | eXCHanGe H&L, D&E | ||||
| Команды передачи управления | |||||||
| PCHL | (PC)(HL) | – | H&L to Programm Counter | ||||
| JMP adr | (PC)adr | – | JuMP unconditional | ||||
| JNZ adr | JMP if Z=0 | – | Jump on No Zero | ||||
| JZ adr | JMP if Z=1 | – | Jump on Zero | ||||
| JNC adr | JMP if CY=0 | – | Jump on No Carry | ||||
| JC adr | JMP if CY=1 | – | Jump on Carry | ||||
| JPO adr | JMP if P=0 | – | Jump on Parity Odd | ||||
| JPE adr | JMP if P=1 | – | Jump on Parity Even | ||||
| JP adr | JMP if S=0 | – | Jump on Positive | ||||
| JM adr | JMP if S=1 | – | Jump on Minus | ||||
| Команды организации подпрограмм | |||||||
| CALL adr | stack(PC) (PC)adr | – | CALL unconditional | ||||
| CNZ adr | CALL if Z=0 | – | Call on No Zero | ||||
| CZ adr | CALL if Z=1 | – | Call on Zero | ||||
| CNC adr | CALL if CY=0 | – | Call on No Carry | ||||
| CC adr | CALL if CY=1 | – | Call on Carry | ||||
| CPO adr | CALL if P=0 | – | Call on Parity Odd | ||||
| CPE adr | CALL if P=1 | – | Call on Parity Even | ||||
| CP adr | CALL if S=0 | – | Call on Positive | ||||
| CM adr | CALL if S=1 | – | Call on Minus | ||||
| RST N | stack(PC) (PC)N*8 | – | ReSTart | 11nnn111 | |||
| RET | (PC)stack | – | RETurn | ||||
| RNZ | RET if Z=0 | – | Return on No Zero | ||||
| RZ | RET if Z=1 | – | Return on Zero | ||||
| RNC | RET if CY=0 | – | Return on No Carry | ||||
| RC | RET if CY=1 | – | Return on Carry | ||||
| RPO | RET if P=0 | – | Return on Parity Odd | ||||
| RPE | RET if P=1 | – | Return on Parity Even | ||||
| RP | RET if S=0 | – | Return on Positive | ||||
| RM | RET if S=1 | – | Return on Minus | ||||
| Команды арифметических, логических и сдвиговых операций | |||||||
| ADD r | (A)(A)+(r) | + | ADD Register to A | 10000SSS | |||
| ADD M | (A)(A)+M(HL) | + | ADD Memory to A | ||||
| ADI d8 | (A)(A)+d8 | + | ADd Immediate to A | ||||
| ADC r | (A)(A)+(r)+ (CY) | + | ADd Register to A with Carry | 10001SSS | |||
| ADC M | A)(A)+M(HL)+(CY) | + | ADd Memory to A with Carry | ||||
| ACI d8 | (A)(A)+d8+ (CY) | + | Add Immediate to A with Carry | ||||
| INR r | (r)(r)+1 | –CY | INcRement Register | 00DDD100 | |||
| INR M | M(HL) M(HL)+1 | –CY | INcRement Memory | ||||
| INX B | (BC)(BC)+1 | – | INcrement register pair B&C | ||||
| INX D | (DE)(DE)+1 | – | INcrement register pair D&E | ||||
| INX H | (HL)(HL)+1 | – | INcrement register pair H&L | ||||
| DAD B | (HL)(HL)+ (BC) | CY | Double register ADd. Add B&C to H&L | ||||
| DAD D | (HL)(HL)+ (DE) | CY | Double register ADd. Add D&E to H&L | ||||
| DAD H | (HL)(HL)+ (HL) | CY | Double register ADd. Add H&L to H&L | ||||
| DAD SP | (HL)(HL)+ (SP) | CY | Double register ADd. Add SP to H&L | ||||
| SUB r | (A)(A)–(r) | + | SUBtract Register from A | 10010SSS | |||
| SUB M | (A)(A)–M(HL) | + | SUBtract Memory from A | ||||
| SUI d8 | (A)(A)–d8 | + | SUbtract Immediate from A | ||||
| SBB r | (A)(A)–(r)–(CY) | + | SUbtract Register from A with borrow | 10011SSS | |||
| SBB M | (A)(A)–M(HL)– (CY) | + | Subtract Memory from A with borrow | ||||
| SBI d8 | (A)(A)–d8–(CY) | + | Subtract Immediate from A with Borrow | ||||
| DCR r | (r)(r)–1 | –CY | DeCrement Register | 00DDD101 | |||
| DCR M | M(HL) M(HL)–1 | –CY | DeCrement Memory | ||||
| DCX B | (BC)(BC)–1 | – | DeCrement register pair B&C | ||||
| DCX D | (DE)(DE)–1 | – | DeCrement register pair D&E | ||||
| DCX H | (HL)(HL)–1 | – | DeCrement register pair H&L | ||||
| ANA r | (A)(A)&(r) | + | ANd Register with A | 10100SSS | |||
| ANA M | (A) (A)&M(HL) | + | ANd Memory with A | ||||
| ANI d8 | (A)(A)&d8 | + | ANd Immediate with A | ||||
| ORA r | (A)(A)Ú(r) | + | OR Register with A | 10110SSS | |||
| ORA M | (A) (A)ÚM(HL) | + | OR Memory with A | ||||
| ORI d8 | (A)(A)Úd8 | + | OR Immediate with A | ||||
| XRA r | (A)(A)Å(r) | + | eXclusive or Register with A | 10101SSS | |||
| XRA M | (A)(A)ÅM(HL) | + | eXclusive or Memory with A | ||||
| XRI d8 | (A)(A)Åd8 | + | eXclusive or Immediate with A | ||||
| CMP r | (F)(A–(r) | + | CoMPare Register with A | 00DDD101 | |||
| CMP M | (F)(A)–M | + | CoMPare Memory with A | ||||
| CPI d8 | (F)(A)–d8 | + | ComPare Immediate with A | ||||
| RAR |
| CY | Rotate A Right through carry | ||||
| RAL |
| CY | Rotate A Left through carry | ||||
| RRC |
| CY | Rotate A Right into the Carry | ||||
| RLC |
| CY | Rotate A Left into the Carry | ||||
| DAA | Десятичная коррекция | + | Decimal Adjust A | ||||
| CMA | (A)( )
| – | CoMplement A | ||||
| STC | (CY)1 | CY | SeT Carry | ||||
| CMC | (CY)( )
| CY | CoMplement Carry | ||||
| Команды управления стеком | |||||||
| SPHL | (SP)(HL) | – | H&L to Stack Pointer | ||||
| PUSH B | stack(BC) | – | PUSH register pair B&C on stack | ||||
| PUSH D | stack(DE) | – | PUSH register pair D&E on stack | ||||
| PUSH H | stack(HL) | – | PUSH register pair H&L on stack | ||||
| PUSH PSW | stack(A)&(F) | – | PUSH A&F on stack | ||||
| POP B | (BC)stack | – | POP register pair B&C off stack | ||||
| POP D | (DE)stack | – | POP register pair D&E off stack | ||||
| POP H | (HL)stack | – | POP register pair H&L off stack | ||||
| POP PSW | (A)&(F)stack | – | POP A&F off stack | ||||
| XTHL | (HL)«stack | – | eXchange H&L, Top of stack | ||||
| Команды ввода, вывода и управления состоянием процессора | |||||||
| IN port | ABport (A)DB | – | INput | ||||
| OUT port | ABport DB(A) | – | OUTput | ||||
| DI | Запрет прерываний | – | Disable Interrupts | ||||
| EI | Разрешение прерываний | – | Enable Interrupts | ||||
| HLT | Останов | – | HaLT | ||||
| NOP | Нет операции | – | No-OPeration |
Таблица 1.7
Обозначения принятые при описании команд
| Обозн. | Пояснения |
| r,r1,r2 | один из 8 разрядных регистров общего назначения: A,B,C,D,E,H,L |
| SSS | адрес регистра источника информации (Табл.1) |
| DDD | адрес регистра приёмника информации (Табл.1); |
| () | содержимое. Например,(A) – содержимое регистра A. |
| M() | содержимое ячейки памяти, адрес которой задан косвенно. Например, M(HL) – содержимое ячейки памяти, адрес которой хранится в регистровой паре HL. |
| d8,d16 | соответсвенно 8- и 16-разрядный операнды, адресуемые непосредственно |
| adr | 16-разрядный адрес памяти |
| port | 8-разрядный адрес устройства ввода-вывода |
| PC | регистр-счётчик команд (Programm Counter) |
| SP | регистр-указатель стека (Stack Pointer) |
| nnn | двоичный код номера N |
| AB | шина адреса (Adress Bus) |
| DB | шина данных (Data Bus) |
| F | влияние команды на признаки |
| + | команда влияет на все признаки |
| – | команда не влияет ни на какой признак |
| +CY | команда влияет только на признак CY |
| –CY | команда влияет на все признаки кроме признака CY |
| Ф | формат команды (количество байт) |
| Т | количество машинных тактов в команде |
| Ц | количество машинных циклов в команде |
)
)






