Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УП по циклу ЛР ОМПТ.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
1.81 Mб
Скачать

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

Для кодирования команд в системе команд микропроцессора 8080 использованы практически все возможные варианты 8-разрядного кода команд, то есть команд чуть меньше 256.

По функциональному назначению их можно разделить на 6 основных групп.

  • Команды пересылок – обеспечивают операции перемещения однобайтных или двухбайтных операндов между регистрами процессора, памятью данных или памятью программ;

  • Команды передач управления – обеспечивают безусловные и условные ветвления в программе.

  • Команды организации подпрограмм – обеспечивают условные и безусловные вызовы подпрограмм и возвраты из подпрограмм.

  • Команды арифметических, логических и сдвиговых операций среди которых арифметические сложение и вычитание, а также логические “И”, “ИЛИ”, “НЕ”, “Исключающее ИЛИ”, сдвига вправо и влево, сравнения.

  • Команды управления стеком – обеспечивают установку указателя стека, а также операции чтения и записи стека.

  • Команды ввода, вывода и управления состоянием процессора – обеспечивают операции обмена байтами процессора с регистрами интерфейсов внешних устройств, а также управление триггером разрешения прерываний процессора, перевод процессора в состояние останова и отсутствие операций.

Полный список команд с выделением групп представлен в табл. 1.6, а перечень использованных для описания команд сокращений представлен в табл. 1.7. Буквы в заголовке табл. 1.6 обозначают: Ф – формат команды, выраженный количеством байтов команды; Т – количество машинных тактов в команде; Ц – количество машинных циклов в команде.

Таблица 1.6

Список команд микропроцессора 8080

Мнемокод

Действия

F

Название

Код

Ф

Т

Ц

Команды пересылок

MOV r1,r2

(r1)(r2)

MOVe Register to Regist

01DDDSSS

1

5

1

MOV M,r

M(HL)(r)

MOVe Register to Memory

01110SSS

1

5

2

MOV r,M

(r)M(HL)

MOVe Memory to Register

01DDD110

1

7

2

MVI r,d8

(r)d8

MOVe Immediate Register

00DDD110

2

7

2

MVI M,d8

M(HL)d8

MOVe Immediate Memory

00110110

2

10

3

STA adr

M(adr)(A)

STore A direct

00110010

3

13

4

LDA adr

(A)M(adr)

LoaD A direct

00111010

3

13

4

STAX B

M(BC)(A)

STore A indirect

00000010

1

7

2

STAX D

M(DE)(A)

STore A indirect

00010010

1

7

2

LDAX B

(A)M(BC)

LoaD A indirect

00001010

1

7

2

LDAX D

(A)M(DE)

LoaD A indirect

00011010

1

7

2

LXI B,d16

(BC)d16

Load Immediate Register pair B&C

00000001

3

10

3

LXI D,d16

(DE)d16

Load Immediate register pair D&E

00010001

3

10

3

LXI H,d16

(HL)d16

Load Immediate register pair H&L

00100001

3

10

3

LXI SP,d16

(SP)d16

Load Immediate stack pointer

00110001

3

10

3

SHLD adr

M(adr)(L)

M(adr+1)(H)

Store H&L Direct

00100010

3

16

5

LHLD adr

(L)M(adr)

(H)M(adr+1)

Load H&L Direct

00101010

3

16

5

XCHG

(HL)(DE)

eXCHanGe H&L, D&E

11101011

1

4

1

Команды передачи управления

PCHL

(PC)(HL)

H&L to Programm Counter

11101001

1

5

1

JMP adr

(PC)adr

JuMP unconditional

11000011

3

10

3

JNZ adr

JMP if Z=0

Jump on No Zero

11000010

3

10

3

JZ adr

JMP if Z=1

Jump on Zero

11001010

3

10

3

JNC adr

JMP if CY=0

Jump on No Carry

11010010

3

10

3

JC adr

JMP if CY=1

Jump on Carry

11011010

3

10

3

JPO adr

JMP if P=0

Jump on Parity Odd

11100010

3

10

3

JPE adr

JMP if P=1

Jump on Parity Even

11101010

3

10

3

JP adr

JMP if S=0

Jump on Positive

11110010

3

10

3

JM adr

JMP if S=1

Jump on Minus

11111010

3

10

3

Команды организации подпрограмм

CALL adr

stack(PC)

(PC)adr

CALL unconditional

11001101

3

17

5

CNZ adr

CALL if Z=0

Call on No Zero

11000100

3

17

5

CZ adr

CALL if Z=1

Call on Zero

11001100

3

17

5

CNC adr

CALL if CY=0

Call on No Carry

11010100

3

17

5

CC adr

CALL if CY=1

Call on Carry

11011100

3

17

5

CPO adr

CALL if P=0

Call on Parity Odd

11100100

3

17

5

CPE adr

CALL if P=1

Call on Parity Even

11101100

3

17

5

CP adr

CALL if S=0

Call on Positive

11110100

3

17

5

CM adr

CALL if S=1

Call on Minus

11111100

3

17

5

RST N

stack(PC)

(PC)N*8

ReSTart

11nnn111

1

11

3

RET

(PC)stack

RETurn

11001001

1

10

3

RNZ

RET if Z=0

Return on No Zero

11000000

1

11

3

RZ

RET if Z=1

Return on Zero

11001000

1

11

3

RNC

RET if CY=0

Return on No Carry

11010000

1

11

3

RC

RET if CY=1

Return on Carry

11011000

1

11

3

RPO

RET if P=0

Return on Parity Odd

11100000

1

11

3

RPE

RET if P=1

Return on Parity Even

11101000

1

11

3

RP

RET if S=0

Return on Positive

11110000

1

11

3

RM

RET if S=1

Return on Minus

11111000

1

11

3

Команды арифметических, логических и сдвиговых операций

ADD r

(A)(A)+(r)

+

ADD Register to A

10000SSS

1

4

1

ADD M

(A)(A)+M(HL)

+

ADD Memory to A

10000110

1

7

2

ADI d8

(A)(A)+d8

+

ADd Immediate to A

11000110

2

7

2

ADC r

(A)(A)+(r)+ (CY)

+

ADd Register to A with Carry

10001SSS

1

4

1

ADC M

A)(A)+M(HL)+(CY)

+

ADd Memory to A with Carry

10001110

1

7

2

ACI d8

(A)(A)+d8+ (CY)

+

Add Immediate to A with Carry

11001110

2

7

2

INR r

(r)(r)+1

–CY

INcRement Register

00DDD100

1

5

1

INR M

M(HL)

M(HL)+1

–CY

INcRement Memory

00110100

1

10

3

INX B

(BC)(BC)+1

INcrement register pair B&C

00000011

1

5

1

INX D

(DE)(DE)+1

INcrement register pair D&E

00010011

1

5

1

INX H

(HL)(HL)+1

INcrement register pair H&L

00100011

1

5

1

DAD B

(HL)(HL)+ (BC)

CY

Double register ADd.

Add B&C to H&L

00001001

1

10

3

DAD D

(HL)(HL)+ (DE)

CY

Double register ADd.

Add D&E to H&L

00011001

1

10

3

DAD H

(HL)(HL)+ (HL)

CY

Double register ADd.

Add H&L to H&L

00101001

1

10

3

DAD SP

(HL)(HL)+ (SP)

CY

Double register ADd.

Add SP to H&L

00111001

1

10

3

SUB r

(A)(A)–(r)

+

SUBtract Register from A

10010SSS

1

4

1

SUB M

(A)(A)–M(HL)

+

SUBtract Memory from A

10010110

1

7

2

SUI d8

(A)(A)–d8

+

SUbtract Immediate from A

11010110

2

7

2

SBB r

(A)(A)–(r)–(CY)

+

SUbtract Register from A with borrow

10011SSS

1

4

1

SBB M

(A)(A)–M(HL)– (CY)

+

Subtract Memory from A with borrow

10011110

1

7

2

SBI d8

(A)(A)–d8–(CY)

+

Subtract Immediate from A with Borrow

11011110

2

7

2

DCR r

(r)(r)–1

–CY

DeCrement Register

00DDD101

1

5

1

DCR M

M(HL) M(HL)–1

–CY

DeCrement Memory

00110101

1

10

3

DCX B

(BC)(BC)–1

DeCrement register pair B&C

00001101

1

5

1

DCX D

(DE)(DE)–1

DeCrement register pair D&E

00011101

1

5

1

DCX H

(HL)(HL)–1

DeCrement register pair H&L

00101101

1

5

1

ANA r

(A)(A)(r)

+

ANd Register with A

10100SSS

1

4

1

ANA M

(A) (A)M(HL)

+

ANd Memory with A

10100110

1

7

2

ANI d8

(A)(A)d8

+

ANd Immediate with A

11100110

2

7

2

ORA r

(A)(A)(r)

+

OR Register with A

10110SSS

1

4

1

ORA M

(A)

(A)M(HL)

+

OR Memory with A

10110110

1

7

2

ORI d8

(A)(A)d8

+

OR Immediate with A

11110110

2

7

2

XRA r

(A)(A)(r)

+

eXclusive or Register with A

10101SSS

1

4

1

XRA M

(A)(A)M(HL)

+

eXclusive or Memory with A

10101110

1

7

2

XRI d8

(A)(A)d8

+

eXclusive or Immediate with A

11101110

2

7

2

CMP r

(F)(A–(r)

+

CoMPare Register with A

00DDD101

1

5

1

CMP M

(F)(A)–M

+

CoMPare Memory with A

10111110

1

7

2

CPI d8

(F)(A)–d8

+

ComPare Immediate with A

11111110

2

7

2

RAR

CY

Rotate A Right through carry

00011111

1

4

1

RAL

CY

Rotate A Left through carry

00010111

1

4

1

RRC

CY

Rotate A Right into the Carry

00001111

1

4

1

RLC

CY

Rotate A Left into the Carry

00000111

1

4

1

DAA

Десятичная коррекция

+

Decimal Adjust A

00100111

1

4

1

CMA

(A)( )

CoMplement A

00101111

1

4

1

STC

(CY)1

CY

SeT Carry

00110111

1

4

1

CMC

(CY)( )

CY

CoMplement Carry

00111111

1

4

1

Команды управления стеком

SPHL

(SP)(HL)

H&L to Stack Pointer

11111001

1

5

1

PUSH B

stack(BC)

PUSH register pair B&C on stack

11000101

1

11

3

PUSH D

stack(DE)

PUSH register pair D&E on stack

11010101

1

11

3

PUSH H

stack(HL)

PUSH register pair H&L on stack

11100101

1

11

3

PUSH PSW

stack(A)(F)

PUSH A&F on stack

11110101

1

11

3

POP B

(BC)stack

POP register pair B&C off stack

11000001

1

10

3

POP D

(DE)stack

POP register pair D&E off stack

11010001

1

10

3

POP H

(HL)stack

POP register pair H&L off stack

11100001

1

10

3

POP PSW

(A)(F)stack

POP A&F off stack

11110001

1

10

3

XTHL

(HL)stack

eXchange H&L, Top of stack

11100011

1

18

5

Команды ввода, вывода и управления состоянием процессора

IN port

ABport

(A)DB

INput

11011011

2

10

3

OUT port

ABport

DB(A)

OUTput

11010011

2

10

3

DI

Запрет

прерываний

Disable Interrupts

11110011

1

4

1

EI

Разрешение прерываний

Enable Interrupts

11111011

1

4

1

HLT

Останов

HaLT

01110110

1

7

1

NOP

Нет операции

No-OPeration

00000000

1

4

1

Таблица 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

Ф

формат команды (количество байт)

Т

количество машинных тактов в команде

Ц

количество машинных циклов в команде