Команды логических операций предназначены для выполнения следующих операций:

- поразрядное логическое И над содержимым заданного регистра и аккумулятора;

- поразрядное логическое И над содержимым ячейки памяти и аккумулятора;

- поразрядное логическое И над содержимым аккумулятора и константой;

- поразрядное логическое ИЛИ над содержимым заданного регистра и аккумулятора;

- поразрядное логическое ИЛИ над содержимым ячейки памяти и аккумулятора;

- поразрядное логическое ИЛИ над содержимым аккумулятора и константой;

- поразрядное исключающее ИЛИ над содержимым заданного регистра и аккумулятора;

- поразрядное исключающее ИЛИ над содержимым ячейки памяти и аккумулятора;

- поразрядное исключающее ИЛИ над содержимым аккумулятора и константой;

- сдвиг содержимого аккумулятора;

- циклический сдвиг содержимого аккумулятора;

- инвертирование содержимого аккумулятора;

- установка и инвертирование флага переноса;

- сравнение содержимого аккумулятора с содержимым ячейки памяти;

- сравнение содержимого аккумулятора с константой.

Команды логических операций могут состоять из одного или двух байтов. Первый байт содержит код операции, второй – константное значение операнда (если предусмотрено).

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

Регистр флагов состоит из следующих признаков:

· C (Carry)- признак переноса;

· M (Minus) - признак отрицательного результата (в эмуляторе обозначен как S);

· Z (Zero) - признак нуля;

· P (Parity) - признак паритета/четности;

НЕ нашли? Не то? Что вы ищете?

· AC (Auxiliary Carry) - признак половинного переноса.

Номер пп

Мнемоника

Код

Число циклов

Число тактов

Длина в байтах

Флаги:

C, Z, M, P, AC

Содержание операции

Описание операции

1

ANA src

10100SSS

1

4

1

0+++0

A <- A & src

Поразрядное логическое И аккумулятора и регистра

2

XRA src

10101SSS

1

4

1

0+++0

A <- A ^ src

Поразрядное исключающее ИЛИ аккумулятора и регистра

3

ORA src

10110SSS

1

4

1

0+++0

A <- A | src

Поразрядное логическое ИЛИ аккумулятора и регистра

4

CMP src

10111SSS

1

4

1

+++++

A == src

Сравнение аккумулятора с регистром

5

ANA M

A6

2

7

1

0+++0

A <- A & (HL)

Поразрядное логическое И аккумулятора и ячейки памяти с адресом из HL

6

XRA M

AE

2

7

1

0+++0

A <- A ^ (HL)

Поразрядное исключающее ИЛИ аккумулятора и ячейки памяти с адресом из HL

7

ORA M

B6

2

7

1

0+++0

A <- A | (HL)

Поразрядное логическое ИЛИ аккумулятора и ячейки памяти с адресом из HL

8

CMP M

BE

2

7

1

+++++

A == (HL)

Сравнение аккумулятора и ячейки памяти с адресом из HL

9

ANI data8

E6

2

7

2

0+++0

A <- A & data8

Поразрядное логическое И аккумулятора и константы

10

XRI data8

EE

2

7

2

0+++0

A <- A ^ data8

Поразрядное исключающее ИЛИ аккумулятора и константы

11

ORI data8

F6

2

7

2

0+++0

A <- A | data8

Поразрядное логическое ИЛИ аккумулятора и константы

12

CPI data8

FE

2

7

2

+++++

A == data8

Сравнение аккумулятора с константой

13

RLC

07

1

4

1

+----

C<-A7<-A6<-...<-A0<-A7

Циклический сдвиг влево (выдвигаемый старший разряд записывается во флаг переноса и освобождаемый младший)

14

RRC

0F

1

4

1

+----

C<-A0<-A1<-...<-A7<-A0

Циклический сдвиг вправо (выдвигаемый младший разряд записывается во флаг переноса и освобождаемый старший)

15

RAL

17

1

4

1

+----

C<-A7<-A6<-...<-A0<-C

Расширенный сдвиг влево (в освобождаемый младший разряд записывается значение флага переноса, затем выдвигаемый старший разряд заноситься во флаг переноса)

16

RAR

1F

1

4

1

+----

C<-A0<-A1<-...<-A7<-C

Расширенный сдвиг вправо (в освобождаемый старший разряд записывается значение флага переноса, затем выдвигаемый младший разряд заноситься во флаг переноса)

17

CMA

2E

1

4

1

-----

A <- !A

Поразрядное инвертирование содержимого аккумулятора

18

CMC

3E

1

4

1

+----

C <- !C

Инвертирование флага переноса

19

STC

37

1

4

1

1----

C <- 1

Установка флага переноса

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

Команды передачи управления предназначены для выполнения следующих операций:

- принудительное изменение содержимого регистра команд путем записи в него адреса в виде константы или содержимого регистра HL (безусловный переход);

- переход по заданному адресу в зависимости от состояния флагов (условный переход);

- вызов подпрограммы по заданному адресу;

- вызов подпрограммы по заданному адресу в зависимости от состояния флагов;

- возврат из подпрограммы;

- возврат из подпрограммы в зависимости от состояния флагов;

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

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

Регистр флагов состоит из следующих признаков:

· C (Carry)- признак переноса;

· M (Minus) - признак отрицательного результата (в эмуляторе обозначен как S);

· Z (Zero) - признак нуля;

· P (Parity) - признак паритета/четности;

· AC (Auxiliary Carry) - признак половинного переноса.

Номер пп

Мнемоника

Код

Число циклов

Число тактов

Длина в байтах

Содержание операции

Описание операции

1

PCHL

E9

1

5

1

PC <- HL

Безусловный переход по адресу из HL

2

JMP addr

C3

3

10

3

PC <- addr

Безусловный переход по адресу addr

3

JC addr

DA

3

10

3

if (C) PC <- addr

Условный переход по адресу addr, если C=1

4

JNC addr

D2

3

10

3

if (!C) PC <- addr

Условный переход по адресу addr, если C=0

5

JZ/JNZ addr

CA/C2

3

10

3

if (Z/!Z) PC <- addr

Условный переход по адресу addr, если Z=1/Z=0

6

JM/JP addr

FA/F2

3

10

3

if (M/!M) PC <- addr

Условный переход по адресу addr, если M=1/M=0

7

JPE/JPO addr

EA/E2

3

10

3

if (P/!P) PC <- addr

Условный переход по адресу addr, если P=1/P=0

8

CALL addr

CD

3

10

3

SP<- SP-2

(SP) <- PC <- addr

Вызов подпрограммы по адресу addr с запоминанием текущего содержимого регистра команд в стеке

9

CC/CNC addr

DC/D4

3/5

11/17

3

if (C/!C) CALL addr

Выполнение команды вызова подпрограммы, если C=1/C=0

10

CZ/CNZ addr

CC/C4

3/5

11/17

3

if (Z/!Z) CALL addr

Выполнение команды вызова подпрограммы, если Z=1/Z=0

11

CM/CP addr

FC/F4

3/5

11/17

3

if (M/!M) CALL addr

Выполнение команды вызова подпрограммы, если M=1/M=0

12

CPE/CPO addr

EC/E4

3/5

11/17

3

if (P/!P) CALL addr

Выполнение команды вызова подпрограммы, если P=1/P=0

13

RET

C9

3

11

1

PC <- (SP)

SP<-SP+2

Возврат из подпрограммы с восстановлением содержимого регистра команд из стека

14

RC/RNC

D8/D0

1/3

5/11

1

if (C/!C) RET

Выполнение команды возврата из подпрограммы, если C=1/C=0

15

RZ/RNZ

C8/C0

1/3

5/11

1

if (Z/!Z) RET

Выполнение команды возврата из подпрограммы, если Z=1/Z=0

16

RM/RP

F8/F0

1/3

5/11

1

if (M/!M) RET

Выполнение команды возврата из подпрограммы, если M=1/M=0

17

RPE/RPO

E8/E0

1/3

5/11

1

if (P/!P) RET

Выполнение команды возврата из подпрограммы, если P=1/P=0

4. Команды арифметических операций

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3