домашняя библиотека
Поиск в библиотеке
Навигация по предметам
Последние добавленные новости
Реклама
информационный киоск цена

Архитектура и организация ЭВММикропроцессор Z80

Операции ввода-вывода

Микропроцессор Z80

Набор операций ввода-вывода по сравнению с системой команд микропроцессора Intel 8080 был существенно расширен.

Инструкции IN A,(n) и OUT (n),A – единственные команды ввода-вывода, реализованные в микропроцессоре 8080. Они обеспечивают соответственно ввод байта информации из порта и вывод информации в порт. Младший байт адреса порта содержится в коде команды – это константа n. Старший байт адреса порта содержится в аккумуляторе. (Микропроцессор 8080 всегда использовал 8-разрядный адрес порта, содержащийся в коде команды.) Значение, читаемое из порта инструкцией IN, заносится в аккумулятор; значение, заносимое в порт инструкцией OUT, находится в аккумуляторе. Эта пара инструкций на флажки влияния не оказывает.

Инструкции IN r,(C) и OUT (C),r осуществляют ввод байта из порта или его вывод в порт. Адрес порта находится в регистровой паре BC; данные, читаемые из порта или выводимые в порт, находятся в регистре r. Команда IN устанавливает или сбрасывает флажки S, Z и P/V в соответствии со значением прочитанного значения (флажок P/V является признаком чётности) и сбрасывает флажки H и N; значение флажка C не изменяется. Команда OUT на флажки влияния не оказывает. Заметим, что если в поле r кода команды IN задана комбинация 110, то прочитанное значение вызовет соответствующую установку или сброс флажков, но не будет сохранено. Действия микропроцессора для этой комбинации в команде OUT в фирменной документации не определены. По-видимому, в порт будет записано случайное значение.

Оставшиеся инструкции (INI, INIR, IND, INDR, OUTI, OTIR, OUTD и OTDR) обеспечивают ввод или вывод нескольких байтов информации. В регистровой паре HL содержится адрес области памяти, в которую будут заноситься вводимые данные или из которой будут извлекаться выводимая информация. После ввода или вывода очередного байта информации содержимое HL увеличивается или уменьшается на 1 (если третья буква мнемоника кода команды – I, то осуществляется инкремент этой регистровой пары; если D – то декремент). В качестве адреса порта используется содержимое регистровой пары BC. Кроме того, содержимое регистра B используется в качестве счётчика; оно уменьшается на единицу после ввода или вывода каждого байта информации. Инструкции, мнемоники которых заканчиваются на букву R (INIR, INDR, OTIR и OTDR), производят ввод или вывод данных до тех пор, пока регистр B не будет обнулён. Инструкции, мнемоники которых не содержат буквы R (INI, IND, OUTI и OUTD), выполняют одиночную операцию ввода или вывода байта. После выполнения этих инструкций значение флажка C не изменяется; флажок N устанавливается; флажок Z сбрасывается, если содержимое регистра B отлично от нуля, и устанавливается при обнулении регистра B (таким образом, в инструкциях с автоматическим повторением – INIR, INDR, OTIR и OTDR – флажок Z будет установлен); состояние остальных флажков непредсказуемо.

Прочие операции

Микропроцессор Z80

Инструкции CCF и SCF изменяют состояние флажка C: первая меняет его состояние на противоположное, а вторая устанавливает в единицу.

Инструкция NOP не выполняет никаких действий.

Инструкция HALT переводит микропроцессор в состояние останова. Находясь в состоянии останова, процессор выдаёт сигнал HALT#, однако продолжает выполнять циклы регенерации памяти, а также обрабатывать запросы захвата шины и прерываний. Выход из состояния останова возможен с помощью прерывания (маскируемые прерывания при этом должны быть разрешены), а также с помощью сброса.

Инструкции DI и EI соответственно запрещают и разрешают маскируемые прерывания. Их функция заключается в соответственно сбросе и установке флажков IFF1 и IFF2, управляющих прерываниями.

Инструкции IM устанавливают соответствующий режим обработки маскируемых прерываний. В процессе сбора устанавливается режим 0, обеспечивающий совместимость (правда, как уже указывалось, неполную) с механизмом обработки прерываний микропроцессора Intel 8080.

Приложение 1. Сводка инструкций микропроцессора Z80

В таблице используются следующие обозначения:

r, r1, r2 – регистры общего назначения. В кодах операций регистрам соответствуют следующие битовые значения: 000 – B, 001 – C, 010 – D, 011 – E, 100 – H, 101 – L, 111 – A. Значение 110 применяется для обозначения операнда в памяти, адрес которого содержится в регистровой паре HL (см. ниже). В языке ассемблера микропроцессора 8080 для этот случай обозначался “псевдорегистром” M (например, инструкция процессора Z80 LD A,(HL) соответствует инструкции процессора 8080 MOV A,M);

(IX), (IY), (BC), (DE), (HL) – операнд в памяти, адрес которого содержится в соответствующем 16-разрядном регистре или регистровой паре;

(IX+d), (IY+d) – операнд в памяти; его адрес равен сумме содержимого указанного индексного регистра и 8-разрядной константы d, являющейся частью кода команды;

n – 8-разрядная константа, являющаяся частью кода команды;

nn – 16-разрядная константа, являющаяся частью кода команды (в памяти младший байт предшествует старшему);

e – 8-разрядное смещение относительно адреса следующей команды;

(aa) – операнд в памяти по адресу aa, являющемуся частью кода команды;

dd – 16-разрядный регистр SP или одна из регистровых пар. Им соответствуют следующие коды: 00 – BC, 01 – DE, 10 – HL, 11 – SP;

pp – одна из 16-разрядных пар или регистров: 00 – BC, 01 – DE, 10 – IX, 11 – SP;

qq – одна из 16-разрядных регистровых пар: 00 – BC, 01 – DE, 10 – HL, 11 – AF;

ss – одна из 16-разрядных пар или регистров: 00 – BC, 01 – DE, 10 – IY, 11 – SP;

x – номер одной из восьми подпрограмм, переход к которым осуществляется с помощью инструкции RST;

(p) – порт ввода-вывода с адресом p;

b – номер разряда в диапазоне 0–7;

rb – разряд b регистра r;

(HL)b, (IX+d)b, (IY+d)b – разряд b ячейки памяти с соответствующим адресом;

cc – условие перехода, кодируемое следующим образом: NZ (000) – не нуль, не равно, Z=0; Z (001) – нуль, равно, Z=1; NC (010) – отсутствие переноса или заёма, C=0; C (011) – наличие переноса или заёма, C=1; PO (100) – нечётный результат, P/V=0; PE (101) – чётный результат, P/V=1; P (110) – знак “плюс”, S=0; M (111) – знак “минус”, S=1.

* – флаг устанавливается по результатам выполненной операции;

? – значение флага после выполнения операции не определено;

& – операция “логическое И”;

| – операция “логическое ИЛИ”;

Å – операция “исключающее ИЛИ”.

Мнемоника

Операция

Флаги

Код операции

Кол-во байтов

Кол-во циклов

Кол-во тактов

S

Z

H

P/V

N

C

76

543

210

шестн.

Однобайтовые операции пересылки

LD r1,r2

r1r2

01

r1

r2

 

1

1

4

LD r,n

rn

00

r

110

 

2

2

7

 

 

           

n

       

LD r,(HL)

r←(HL)

01

r

110

 

1

2

7

LD r,(IX+d)

r←(IX+d)

11

011

101

DD

3

5

19

 

 

           

01

r

110

       
 

 

           

d

       

LD r,(IY+d)

r←(IY+d)

11

111

101

FD

3

5

19

 

 

           

01

r

110

       
 

 

           

d

       

LD (HL),n

(HL) ←n

00

110

110

36

2

3

10

               

n

       

LD (IX+d),n

(IX+d)←n

11

011

101

DD

4

5

19

               

00

110

110

36

     
               

d

       
               

n

       

LD (IY+d),n

(IY+d)←n

11

111

101

FD

4

5

19

               

00

110

110

36

     
               

d

       
               

n

       

LD A,(BC)

A←(BC)

00

001

010

0A

1

2

7

LD A,(DE)

A←(DE)

00

011

010

1A

1

2

7

LD A,(aa)

A←(aa)

00

111

010

3A

3

4

13

               

a

       
               

a

       

LD (BC),A

(BC)←A

00

000

010

02

1

2

7

LD (DE),A

(DE)←A

00

010

010

12

1

2

7

LD (aa),A

(nn)←A

00

110

010

32

3

4

13

               

a

       
               

a

       

LD A,I

A←I

*

*

0

IFF2

0

11

101

101

ED

2

2

9

               

01

010

111

57

     

LD A,R

A←R

*

*

0

IFF2

0

11

101

101

ED

2

2

9

               

01

011

111

5F

     

LD I,A

I←A

11

101

101

ED

2

2

9

               

01

000

111

47

     

LD R,A

R←A

11

101

101

ED

2

2

9

               

01

001

111

4F

     

Двухбайтовые операции пересылки

LD dd,nn

ddnn

00

dd0

001

 

3

3

10

               

n

       
               

n

       

LD IX,nn

IX←nn

11

011

101

DD

4

4

14

               

00

100

001

21

     
               

n

       
               

n

       

LD IY,nn

IY←nn

11

111

1-1

FD

4

4

14

               

00

100

001

21

     
               

n

       
               

n

       

LD HL,(aa)

H←(nn+1)

00

101

010

2A

3

5

16

 

L←(nn)

           

a

       
               

a

       

LD dd,(aa)

dd[15:8]←(nn+1)

11

101

101

ED

4

6

20

 

dd[7:0]←(nn)

01

dd1

011

       
               

a

       
               

a

       

LD IX,(aa)

IX[15:8]←(nn+1)

11

011

101

DD

4

6

20

 

IX[7:0]←(nn)

00

101

010

2A

     
               

a

       
               

a

       

LD IY,(aa)

IY[15:8]←(nn+1)

11

111

101

FD

4

6

20

 

IY[7:0]←(nn)

00

101

010

2A

     
               

a

       
               

a

       

LD (aa),HL

(nn+1)←H

00

100

010

22

3

5

16

 

(nn)←L

a

       
               

a

       

LD (aa),dd

(nn+1)←dd[15:8]

11

101

101

ED

4

6

20

 

(nn)←dd[7:0]

01

dd0

011

       
               

a

       
               

a

       

LD (aa),IX

(nn+1)←IX[15:8]

11

011

101

DD

4

6

20

 

(nn)←IX[7:0]

00

100

010

22

     
               

a

       
               

a

       

LD (aa),IY

(nn+1)←IY[15:8]

11

111

101

FD

4

6

20

 

(nn)←IY[7:0]

00

100

010

22

     
               

a

       
               

a

       

LD SP,HL

SP←HL

11

111

001

F9

1

1

6

LD SP,IX

SP←IX

11

011

101

DD

2

2

10

               

11

111

001

F9

     

LD SP,IY

SP←IY

11

111

101

FD

2

2

10

               

11

111

001

F9

     

PUSH qq

(SP-2)←qq[7:0]

11

qq0

101

 

1

3

11

 

(SP-1)←qq[15:8]

                         
 

SP←SP-2

                         

PUSH IX

(SP-2)←IX[7:0]

11

011

101

DD

2

4

15

 

(SP-1)←IX[15:8]

           

11

100

101

E5

     
 

SP←SP-2

                         

PUSH IY

(SP-2)←IY[7:0]

11

111

101

FD

2

4

15

 

(SP-1)←IY[15:8]

           

11

100

101

E5

     
 

SP←SP-2

                         

POP qq

qq[15:8]←(SP+1)

11

qq0

001

 

1

3

10

 

qq[7:0]←(SP)

                         
 

SP←SP+2

                         

POP IX

IX[15:8]←(SP+1)

11

011

101

DD

2

4

14

 

IX[7:0]←(SP)

           

11

100

001

E1

     
 

SP←SP+2

                         

POP IY

IY[15:8]←(SP+1)

11

111

101

FD

2

4

14

 

IY[7:0]←(SP)

           

11

100

001

E1

     
 

SP←SP+2

                         

Операции обмена

EX DE,HL

DE↔HL

11

101

011

EB

1

1

4

EX AF,AF'

AF↔AF'

*

*

*

*

*

*

00

001

000

08

1

1

4

EXX

BC↔BC'

11

011

001

D9

1

1

4

 

DE↔DE'

                         
 

HL↔HL'

                         

EX (SP),HL

H↔(SP+1)

11

100

011

E3

1

5

19

 

L↔(SP)

                         

EX (SP),IX

IX[15:8]↔(SP+1)

11

011

101

DD

2

6

23

 

IX[7:0]↔(SP)

           

11

100

011

E3

     

EX (SP),IY

IY[15:8]↔(SP+1)

11

111

101

FD

2

6

23

 

IY[7:0]↔(SP)

           

11

100

011

E3

     

Операции поиска и групповой передачи

LDI

(DE)←(HL)

0

*[1]

0

11

101

101

ED

2

4

16

 

DE←DE+1

           

10

100

000

A0

     
 

HL←HL+1

                         
 

BC←BC-1

                         

LDIR

(DE)←(HL)

0

0

0

11

101

101

ED

2

5

21[2]

 

DE←DE+1

           

10

110

000

B0

2

4

16

 

HL←HL+1

                         
 

BC←BC-1

                         
 

Повтор, пока BC≠0

                         

LDD

(DE)←(HL)

0

*

0

11

101

101

ED

2

4

16

 

DE←DE-1

           

10

101

000

A8

     
 

HL←HL-1

                         
 

BC←BC-1

                         

LDDR

(DE)←(HL)

0

0

0

11

101

101

ED

2

5

21

 

DE←DE-1

           

10

111

000

B8

2

4

16

 

HL←HL-1

                         
 

BC←BC-1

                         
 

Повтор, пока BC≠0

                         

CPI

Сравнение A с (HL)[3]

*

*

*

*

1

11

101

101

ED

2

4

16

 

HL←HL+1

           

10

100

001

A1

     
 

BC←BC-1

                         

CPIR

Сравнение A с (HL)

*

*

*

*

1

11

101

101

ED

2

5

21

 

HL←HL+1

           

10

110

001

B1

2

4

16

 

BC←BC-1

                         
 

Повтор, пока A≠(HL) и BC≠0

                         

CPD

Сравнение A с (HL)

*

*

*

*

1

11

101

101

ED

2

4

16

 

HL←HL-1

           

10

101

001

A9

     
 

BC←BC-1

                         

CPDR

Сравнение A с (HL)

*

*

*

*

1

11

101

101

ED

2

5

21

 

HL←HL-1

           

10

111

001

B9

2

4

16

 

BC←BC-1

                         
 

Повтор, пока A≠(HL) и BC≠0

                         

Однобайтовые арифметико-логические операции

ADD A,r

A←A+r

*

*

*

*

0

*

10

000

r

 

1

1

4

ADD A,n

A←A+n

*

*

*

*

0

*

11

000

110

C6

2

2

7

               

n

       

ADD A,(HL)

A←A+(HL)

*

*

*

*

0

*

10

000

110

86

1

2

7

ADD A,(IX+d)

A←A+(IX+d)

*

*

*

*

0

*

11

011

101

DD

3

5

19

               

10

000

110

86

     
               

d

       

ADD A,(IY+d)

A←A+(IX+d)

*

*

*

*

0

*

11

111

101

FD

3

5

19

               

10

000

110

86

     
               

d

       

ADC A,r

A←A+r+C

*

*

*

*

0

*

10

001

r

 

1

1

4

ADC A,n

A←A+n+C

*

*

*

*

0

*

11

001

110

CE

2

2

7

               

n

       

ADC A,(HL)

A←A+(HL)+C

*

*

*

*

0

*

10

001

110

8E

1

2

7

ADC A,(IX+d)

A←A+(IX+d)+C

*

*

*

*

0

*

11

011

101

DD

3

5

19

               

10

001

110

8E

     
               

d

       

ADC A,(IY+d)

A←A+(IX+d)+C

*

*

*

*

0

*

11

111

101

FD

3

5

19

               

10

001

110

8E

     
               

d

       

SUB r

A←A-r

*

*

*

*

1

*

10

010

r

 

1

1

4

SUB n

A←A-n

*

*

*

*

1

*

11

010

110

D6

2

2

7

               

n

       

SUB (HL)

A←A-(HL)

*

*

*

*

1

*

10

010

110

96

1

2

7

SUB (IX+d)

A←A-(IX+d)

*

*

*

*

1

*

11

011

101

DD

3

5

19

               

10

010

110

96

     
               

d

       

SUB (IY+d)

A←A-(IX+d)

*

*

*

*

1

*

11

111

101

FD

3

5

19

               

10

010

110

96

     
               

d

       

SBC A,r

A←A-r-C

*

*

*

*

1

*

10

011

r

 

1

1

4

SBC A,n

A←A-n-C

*

*

*

*

1

*

11

011

110

DE

2

2

7

               

n

       

SBC A,(HL)

A←A-(HL)-C

*

*

*

*

1

*

10

011

110

9E

1

2

7

SBC A,(IX+d)

A←A-(IX+d)-C

*

*

*

*

1

*

11

011

101

DD

3

5

19

               

10

011

110

9E

     
               

d

       

SBC A,(IY+d)

A←A-(IX+d)-C

*

*

*

*

1

*

11

111

101

FD

3

5

19

               

10

011

110

9E

     
               

d

       

AND r

A←A&r

*

*

1

*

0

0

10

100

r

 

1

1

4

AND n

A←A&n

*

*

1

*

0

0

11

100

110

E6

2

2

7

               

n

       

AND (HL)

A←A&(HL)

*

*

1

*

0

0

10

100

110

A6

1

2

7

AND (IX+d)

A←A&(IX+d)

*

*

1

*

0

0

11

011

101

DD

3

5

19

               

10

100

110

A6

     
               

d

       

AND (IY+d)

A←A&(IX+d)

*

*

1

*

0

0

11

111

101

FD

3

5

19

               

10

100

110

A6

     
               

d

       

OR r

A←A|r

*

*

1

*

0

0

10

110

r

 

1

1

4

OR n

A←A|n

*

*

1

*

0

0

11

110

110

F6

2

2

7

               

n

       

OR (HL)

A←A|(HL)

*

*

1

*

0

0

10

110

110

B6

1

2

7

OR (IX+d)

A←A|(IX+d)

*

*

1

*

0

0

11

011

101

DD

3

5

19

               

10

110

110

B6

     
               

d

       

OR (IY+d)

A←A|(IX+d)

*

*

1

*

0

0

11

111

101

FD

3

5

19

               

10

110

110

B6

     
               

d

       

XOR r

A←AÅr

*

*

1

*

0

0

10

101

r

 

1

1

4

XOR n

A←AÅn

*

*

1

*

0

0

11

101

110

EE

2

2

7

               

n

       

XOR (HL)

A←AÅ (HL)

*

*

1

*

0

0

10

101

110

AE

1

2

7

XOR (IX+d)

A←AÅ (IX+d)

*

*

1

*

0

0

11

011

101

DD

3

5

19

               

10

101

110

AE

     
               

d

       

XOR (IY+d)

A←AÅ (IX+d)

*

*

1

*

0

0

11

111

101

FD

3

5

19

               

10

101

110

AE

     
               

d

       

CP r

Сравнение A и r

*

*

*

*

1

*

10

111

r

 

1

1

4

CP n

Сравнение A и n

*

*

*

*

1

*

11

111

110

FE

2

2

7

               

n

       

CP (HL)

Сравнение A и (HL)

*

*

*

*

1

*

10

111

110

BE

1

2

7

CP (IX+d)

Сравнение A и (IX+d)

*

*

*

*

1

*

11

011

101

DD

3

5

19

             

10

111

110

BE

     
               

d

       

CP (IY+d)

Сравнение A и (IX+d)

*

*

*

*

1

*

11

111

101

FD

3

5

19

             

10

111

110

BE

     
               

d

       

INC r

rr+1

*

*

*

*

0

00

r

100

 

1

1

4

INC (HL)

(HL)←(HL)+1

*

*

*

*

0

00

110

100

34

1

3

11

INC (IX+d)

(IX+d)←(IX+d)+1

*

*

*

*

0

11

011

101

DD

3

6

23

               

00

110

100

34

     
               

d

       

INC (IY+d)

(IY+d)←(IY+d)+1

*

*

*

*

0

11

111

101

FD

3

6

23

               

00

110

100

34

     
               

d

       

DEC r

rr-1

*

*

*

*

0

00

r

101

 

1

1

4

DEC (HL)

(HL)←(HL)-1

*

*

*

*

0

00

110

101

35

1

3

11

DEC (IX+d)

(IX+d)←(IX+d)-1

*

*

*

*

0

11

011

101

DD

3

6

23

               

00

110

101

35

     
               

d

       

DEC (IY+d)

(IY+d)←(IY+d)-1

*

*

*

*

0

11

111

101

FD

3

6

23

               

00

110

101

35

     
               

d

       

DAA

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

*

*

*

*

*

00

100

111

27

1

1

4

CPL

A← not A

1

1

00

101

111

2F

1

1

4

NEG

A← -A

*

*

*

*

1

*

11

101

101

ED

2

2

8

               

01

000

100

44

     

Двухбайтовые арифметические операции

ADD HL,dd

HL←HL+dd

?

0

*

00

dd1

001

 

1

3

11

ADC HL,dd

HL←HL+dd+C

*

*

?

*

0

*

11

101

101

ED

2

4

15

               

01

dd1

010

       

SBC HL,dd

HL←HL-dd-C

*

*

?

*

1

*

11

101

101

ED

2

4

15

               

01

dd0

010

       

ADD IX,pp

IX←IX+pp

?

0

*

11

011

101

DD

2

4

15

               

01

pp1

001

       

ADD IY,ss

IY←IY+ss

?

0

*

11

111

101

FD

2

4

15

               

00

ss1

001

       

INC dd

dddd+1

00

ss0

011

 

1

1

6

INC IX

IX←IX+1

11

011

101

DD

2

2

10

               

00

100

011

23

     

INX IY

IY←IY+1

11

111

101

FD

2

2

10

               

00

100

011

23

     

DEC dd

dddd-1

00

ss1

011

 

1

1

6

DEC IX

IX←IX-1

11

011

101

DD

2

2

10

               

00

101

011

2B

     

DEX IY

IY←IY-1

11

111

101

FD

2

2

10

               

00

101

011

2B

     

Операции сдвигов

RLCA

циклический сдвиг A влево

0

0

*

00

000

111

07

1

1

4

RLA

циклический сдвиг A влево через перенос

0

0

*

00

010

111

17

1

1

4

RRCA

циклический сдвиг A вправо

0

0

*

00

001

111

0F

1

1

4

RRA

циклический сдвиг A вправо через перенос

0

0

*

00

011

111

1F

1

1

4

RLC r

циклический сдвиг r влево

*

*

0

*

0

*

11

001

011

CB

2

2

8

             

00

000

r

       

RLC (HL)

циклический сдвиг (HL) влево

*

*

0

*

0

*

11

001

011

CB

2

4

15

             

00

000

110

06

     

RLC (IX+d)

циклический сдвиг (IX+d) влево

*

*

0

*

0

*

11

011

101

DD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

000

110

06

     

RLC (IY+d)

циклический сдвиг (IY+d) влево

*

*

0

*

0

*

11

111

101

FD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

000

110

06

     

RL r

циклический сдвиг r влево через перенос

*

*

0

*

0

*

11

001

011

CB

2

2

8

             

00

010

r

       

RL (HL)

циклический сдвиг (HL) влево через перенос

*

*

0

*

0

*

11

001

011

CB

2

4

15

             

00

010

110

16

     

RL (IX+d)

циклический сдвиг (IX+d) влево через перенос

*

*

0

*

0

*

11

011

101

DD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

010

110

16

     

RL (IY+d)

циклический сдвиг (IY+d) влево через перенос

*

*

0

*

0

*

11

111

101

FD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

010

110

16

     

RRC r

циклический сдвиг r вправо

*

*

0

*

0

*

11

001

011

CB

2

2

8

             

00

001

r

       

RRC (HL)

циклический сдвиг (HL) вправо

*

*

0

*

0

*

11

001

011

CB

2

4

15

             

00

001

110

0E

     

RRC (IX+d)

циклический сдвиг (IX+d) вправо

*

*

0

*

0

*

11

011

101

DD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

001

110

0E

     

RRC (IY+d)

циклический сдвиг (IY+d) вправо

*

*

0

*

0

*

11

111

101

FD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

001

110

0E

     

RR r

циклический сдвиг r вправо через перенос

*

*

0

*

0

*

11

001

011

CB

2

2

8

             

00

011

r

       

RR (HL)

циклический сдвиг (HL) вправо через перенос

*

*

0

*

0

*

11

001

011

CB

2

4

15

             

00

011

110

1E

     

RR (IX+d)

циклический сдвиг (IX+d) вправо через перенос

*

*

0

*

0

*

11

011

101

DD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

011

110

1E

     

RR (IY+d)

циклический сдвиг (IY+d) вправо через перенос

*

*

0

*

0

*

11

111

101

FD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

011

110

1E

     

SLA r

арифметический сдвиг r влево

*

*

0

*

0

*

11

001

011

CB

2

2

8

             

00

100

r

       

SLA (HL)

арифметический сдвиг (HL) влево

*

*

0

*

0

*

11

001

011

2B

2

4

15

             

00

100

110

26

     

SLA (IX+d)

арифметический сдвиг (IX+d) влево

*

*

0

*

0

*

11

011

101

DD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

100

110

26

     

SLA (IY+d)

арифметический сдвиг (IY+d) влево

*

*

0

*

0

*

11

111

101

FD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

100

110

26

     

SRA r

арифметический сдвиг r вправо

*

*

0

*

0

*

11

001

011

CB

2

2

8

             

00

101

r

       

SRA (HL)

арифметический сдвиг (HL) вправо

*

*

0

*

0

*

11

001

011

2B

2

4

15

             

00

101

110

2E

     

SRA (IX+d)

арифметический сдвиг (IX+d) вправо

*

*

0

*

0

*

11

011

101

DD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

101

110

2E

     

SRA (IY+d)

арифметический сдвиг (IY+d) вправо

*

*

0

*

0

*

11

111

101

FD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

101

110

2E

     

SRL r

логический сдвиг r вправо

*

*

0

*

0

*

11

001

011

CB

2

2

8

             

00

111

r

       

SRL (HL)

логический сдвиг (HL) вправо

*

*

0

*

0

*

11

001

011

2B

2

4

15

             

00

111

110

3E

     

SRL (IX+d)

логический сдвиг (IX+d) вправо

*

*

0

*

0

*

11

011

101

DD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

111

110

3E

     

SRL (IY+d)

логический сдвиг (IY+d) вправо

*

*

0

*

0

*

11

111

101

FD

4

6

23

             

11

001

011

CB

     
             

d

       
             

00

111

110

3E

     

RLD

десятичный сдвиг влево

*

*

0

*

0

11

101

101

ED

2

5

18

             

01

101

111

6F

     

RRD

десятичный сдвиг вправо

*

*

0

*

0

11

101

101

ED

2

5

18

             

01

100

111

67

     

Битовые операции

BIT b,r

Z← not rb

?

*

1

?

0

11

001

011

CB

2

2

8

               

01

b

r

       

BIT b,(HL)

Z← not (HL)b

?

*

1

?

0

11

001

011

CB

2

3

12

               

01

b

110

       

BIT b, (IX+d)

Z← not (IX+d)b

?

*

1

?

0

11

011

101

DD

4

5

20

               

11

001

011

CB

     
               

d

       
               

01

b

110

       

BIT b, (IY+d)

Z← not (IY+d)b

?

*

1

?

0

11

111

101

FD

4

5

20

               

11

001

011

CB

     
               

d

       
               

01

b

110

       

SET b,r

rb ← 1

11

001

011

CB

2

2

8

               

11

b

r

       

SET b,(HL)

(HL)b ← 1

11

001

011

CB

2

4

15

               

11

b

110

       

SET b, (IX+d)

(IX+d)b ← 1

11

011

101

DD

4

6

23

               

11

001

011

CB

     
               

d

       
               

11

b

110

       

SET b, (IY+d)

(IY+d)b ← 1

11

111

101

FD

4

6

23

               

11

001

011

CB

     
               

d

       
               

11

b

110

       

RES b,r

rb ← 1

11

001

011

CB

2

2

8

               

10

b

r

       

RES b,(HL)

(HL)b ← 1

11

001

011

CB

2

4

15

               

10

b

110

       

RES b, (IX+d)

(IX+d)b ← 1

11

011

101

DD

4

6

23

               

11

001

011

CB

     
               

d

       
               

10

b

110

       

RES b, (IY+d)

(IY+d)b ← 1

11

111

101

FD

4

6

23

               

11

001

011

CB

     
               

d

       
               

10

b

110

       

Операции переходов

JP nn

PC←nn

11

000

011

C3

3

3

10

               

n

       
               

n

       

JP cc,nn

Если выполнено условие cc, то PC←nn

11

сс

010

 

3

3

10

             

n

       
             

n

       

JR e

PC←PC+e

00

011

000

18

2

3

12

               

e-2

       

JR C,e

Если C=1, то PC←PC+e

00

111

000

38

2

2

7[4]

             

e-2

 

2

3

12

JR NC,e

Если C=0, то PC←PC+e

00

110

000

30

2

2

7

             

e-2

 

2

3

12

JR Z,e

Если Z=1, то PC←PC+e

00

101

000

28

2

2

7

             

e-2

 

2

3

12

JR NZ,e

Если Z=0, то PC←PC+e

00

100

000

20

2

2

7

             

e-2

 

2

3

12

JP (HL)

PC←HL

11

101

001

E9

1

1

4

JP (IX)

PC←IX

11

011

101

DD

2

2

8

               

11

101

001

E9

     

JP (IY)

PC←IY

11

111

101

FD

2

2

8

               

11

101

001

E9

     

DJNZ e

B←B-1; если B≠0, то PC←PC+e

00

010

000

10

2

2

8[5]

             

e-2

 

2

3

13

CALL nn

(SP-1)←PC[15:8]

11

001

101

CD

3

5

17

 

(SP-2)←PC[7:0]

           

n

       
 

SP←SP-2

           

n

       
 

PC←nn

                         

CALL cc,nn

Если условие cc выполнено, то:

11

сс

100

CD

3

3

10[6]

             

n

 

3

5

17

 

(SP-1)←PC[15:8]

           

n

       
 

(SP-2)←PC[7:0]

                         
 

SP←SP-2

                         
 

PC←nn

                         

RET

PC[7:0]←(SP)

11

001

001

C9

1

3

10

 

PC[15:8]←(SP+1)

                         
 

SP←SP+2

                         

RET cc

Если условие cc выполнено, то:

11

сс

000

 

1

1

5

                     

1

3

11

 

PC[7:0]←(SP)

                         
 

PC[15:8]←(SP+1)

                         
 

SP←SP+2

                         

RETI

Возврат из прерывания

11

101

101

ED

2

4

14

             

01

001

101

4D

     

RETN

Возврат из немаскируемого прерывания

11

101

101

ED

2

4

14

             

01

000

101

45

     
                           
 

IFF1←IFF2

                         

RST x

(SP-1)←PC[15:8]

11

x

111

 

1

3

11

 

(SP-2)←PC[7:0]

                         
 

SP←SP-2

                         
 

PC←адрес подпрограммы

                         
                           

Операции ввода-вывода[7]

IN A,(p)

A←порт (A; p)

11

011

011

DB

2

3

11

               

p

       

IN r,(C)

r←порт (BC)

*

*

0

P

0

11

101

101

ED

2

3

12

               

01

r

000

       

INI

(HL)←порт (BC)

?

*

?

?

1

11

101

101

ED

2

4

16

 

B←B–1

           

10

100

010

A2

     
 

HL←HL+1

                         

INIR

(HL)←порт (BC)

?

1

?

?

1

11

101

101

ED

2

5

21

 

B←B–1

           

10

110

010

B2

2

4

16

 

HL←HL+1

                         
 

Повтор, пока B≠0

                         

IND

(HL)←порт (BC)

?

*

?

?

1

11

101

101

ED

2

4

16

 

B←B–1

           

10

101

010

AA

     
 

HL←HL–1

                         

INDR

(HL)←порт (BC)

?

1

?

?

1

11

101

101

ED

2

5

21

 

B←B–1

           

10

111

010

BA

2

4

16

 

HL←HL–1

                         
 

Повтор, пока B≠0

                         

OUT (p),A

порт (A; p)←A

11

010

011

D3

2

3

11

               

p

       

OUT (C),r

порт (BC)←r

11

101

101

ED

2

3

12

               

01

r

001

       

OUTI

порт (BC)←(HL)

?

*

?

?

1

11

101

101

ED

2

4

16

 

B←B–1

           

10

100

011

A3

     
 

HL←HL+1

                         

OTIR

порт (BC)←(HL)

?

1

?

?

1

11

101

101

ED

2

5

21

 

B←B–1

           

10

110

011

B3

2

4

16

 

HL←HL+1

                         
 

Повтор, пока B≠0

                         

OUTD

порт (BC)←(HL)

?

*

?

?

1

11

101

101

ED

2

4

16

 

B←B–1

           

10

101

011

AB

     
 

HL←HL–1

                         

OTDR

порт (BC)←(HL)

?

1

?

?

1

11

101

101

ED

2

5

21

 

B←B–1

           

10

111

011

BB

2

4

16

 

HL←HL–1

                         
 

Повтор, пока B≠0

                         

Прочие операции

CCF

инверсия флага C

*

00

111

111

3F

1

1

4

SCF

установка флага C

1

00

110

111

37

1

1

4

NOP

нет операции

00

000

000

00

1

1

4

HALT

останов ЦП

01

110

110

76

1

1

4

DI

IFF←0

11

110

011

F3

1

1

4

EI

IFF←1

11

111

011

FB

1

1

4

IM 0

установка режима

11

101

101

ED

2

2

8

 

прерываний 0

           

01

000

110

46

     

IM 1

установка режима

11

101

101

ED

2

2

8

 

прерываний 1

           

01

010

110

56

     

IM 2

установка режима

11

101

101

ED

2

2

8

 

прерываний 2

           

01

011

110

5E

     

   
 
  • Добавлен: 17-08-2010, 08:19 | Просмотров: 13616

    support: admin@sdb.su