Команды арифметической обработки

Команды логической обработки

В составе группы 4 двухместных логических операций над байтами:

ANA, ANI Логическое И

XRA, XRI Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ

ORA, ORI Логическое ИЛИ

CMP, CPI Сравнение

В этих командах один из операндов содержится в аккумуляторе А, который одновременно служит приемником результата. Источником второго операнда служат:

1) регистр src;

2) ячейка памяти (HL);

3) константа, заданная непосредственно в команде.

Мнемоника Код Число циклов Число тактов Флаги: CY, Z, M, P, C, AC Содержание
ANA src 10100SSS     0+++0 A <- A & src
XRA src 10101SSS     0+++0 A <- A ^ src
ORA src 10110SSS     0+++0 A <- A | src
CMP src 10111SSS     +++++ A == src
ANA M A6     0+++0 A <- A & (HL)
XRA M AE     0+++0 A <- A ^ (HL)
ORA M B6     0+++0 A <- A | (HL)
CMP M BE     +++++ A == (HL)
ANI data E6     0+++0 A <- A & data
XRI data EE     0+++0 A <- A ^ data
ORI data F6     0+++0 A <- A | data
CPI data FE     +++++ A == data
RLC       +---- A7<-A6<-...<-A0<-A7
RRC 0F     +---- A0<-A1<-...<-A7<-A0
RAL       +---- A7<-A6<-...<-A0<-CY<-A7
RAR 1F     +---- A0<-A1<-...<-A7<-CY<-A0
CMA 2E     ----- A <-!A
CMS 3E     +---- CY <-!CY
STC       1---- CY <- 1

Логические операции выполняются поразрядно. Операция сравнения выполняется методом вычитания, но результат вычитания никуда не заносится, а операнды сохраняются без изменения.

Две команды STC и CMC дают возможность манипулировать флагом CY, устанавливая и инвертируя его.

Сброс флага CY может быть выполнен командой (При этом состояние флагов тоже изменяется):

ORA A; A <- A | A

Логические команды включают также и подгруппу сдвигов вправо (RRC, RAR) и влево (RLC, RAL). Определены операции циклического (RRC, RLC) и расширенного (RAR, RAL) сдвигов.

В группе определены команды:

ADD, ADC, ADI, ACI, DAD Сложение
SUB, SBB, SUI, SBI Вычитание
INR, INX Инкремент на 1
DCR, DCX Декремент на 1
DAA Десятичная коррекция

Предусмотрены операции как над байтами, так и над словами.

Во всех байтовых операциях сложения и вычитания аккумулятор используется как источник операнда и приемник результата. В качестве источника второго операнда применяется либо регистр src, либо ячейка памяти М, либо литерал data. В команде сложения DAD роль аккумулятора выполняет регистровая пара HL. Эта команда очень важна при организации таблиц и списков.

С помощью команд инкремента/декремента довольно просто реализовать счетчики, часто необходимые в практике программирования.

Мнемоника Код Число циклов Число тактов Флаги: CY, Z, M, P, C, AC Содержание
ADD src 10000SSS     +++++ A <- A + src
ADC src 10001SSS     +++++ A <- A + src + CY
SUB src 10010SSS     +++++ A <- A - src
SBB src 10011SSS     +++++ A <- A - src - CY
ADD M       +++++ A <- A + (HL)
ADC M 8E     +++++ A <- A + (HL) + CY
SUB M       +++++ A <- A - (HL)
SBB M 9E     +++++ A <- A - (HL) - CY
ADI data C6     +++++ A <- A + data
ACI data CE     +++++ A <- A + data + CY
SUI data D6     +++++ A <- A - data
SBI data DE     +++++ A <- A - data - CY
INR dst 00DDD100     -++++ dst <- dst + 1
DCR dst 00DDD101     -++++ dst <- dst - 1
INR M       -++++ (HL) <- (HL) + 1
DCR M       -++++ (HL) <- (HL) - 1
DAA       +++++ A <- 2/10 корр-я A
DAD B/D/H/SP 09/19/29/39     +---- HL <- HL+BC/DE/HL/SP
INX B/D/H/SP 03/13/23/33     ----- R16 <- R16 + 1
DCX B/D/H/SP 0B/1B/2B/3B     ----- R16 <- R16 - 1

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



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