Общее представление команд

Для кодирования команд в системе команд микропроцессора 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

Обозначения принятые при описании команд