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

Для кодирования команд в системе команд микропроцессора 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
Ф формат команды (количество байт)
Т количество машинных тактов в команде
Ц количество машинных циклов в команде

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: