а) Сложение со вторым байтом
ADI Данные | A(A) + <B2> <B1> | C6 |
<B2> | Данные |
б) Сложение со вторым байтом и переносом
ACI Данные | A(A) + <B2>+(Tc) <B1> | CE |
<B2> | Данные |
в) Вычитание второго байта
SUI Данные | A(A) - <B2> < B1> | D6 |
<B2> | Данные |
г) Вычитание второго байта с переносом
SBI Данные | A(A) - <B2>- (Tc) <B1> | DE |
<B2> | Данные |
При выполнении этой группы команд второй операнд приводится непосредственно в команде во втором ее байте. Команды являются двухбайтовыми, выполняются за два цикла (7 тактов). Триггеры признаков устанавливаются в соответствии с результатом выполненной операции. В результате выполнения операции изменяется содержимое аккумулятора, старое содержимое аккумулятора теряется.
Примеры:
12A6) ADI 47
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
12A6 | C6 | C6 |
12A7 | ||
A | 6B=24+47 | |
FL | ||
PC | 12A6 | 12A8 |
0802) ACI A7
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
CE | CE | |
A7 | A7 | |
A | FB | |
FL | ||
PC |
0804) SUI FD
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
D6 | D6 | |
FD | FD | |
A | FB | FE |
FL | ||
PC |
0806) SBI 0A
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
DE | DE | |
0A | 0A | |
A | F8 | ED |
FL | ||
PC |
Сложение содержимого пар регистров
DAD ri | HL (HL)+ (ri)(ri+1) <B1> | ri+1 |
При ri+1=111 - HL (HL) + (SP)
При выполнении этой команды содержимое пары регистров HL складывается с содержимым пар ВС, DE или с содержимым указателя стека (SP). В коде команд приводится код младшего регистра пары (С или Е). В результате выполнения операции устанавливается в соответствующее состояние только триггер переноса, который принимает значение в соответствии с переносом из старшего бита старшего регистра. Команда выполняется за три цикла (10 тактов).
Пример:
1FC1) DAD D
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
1FC1 | ||
H | 1A | |
L | ||
D | ||
C | ||
FL | ||
PC | 1FC1 | 1FC2 |
Логические операции над (А) и (r)
а) Логическая операция "И"
ANA ri | A(A) Ù(ri) <B1> | ri | |
Эта операция, как и все остальные логические операции, является побитовой. Можно считать, что для обработки битов каждого разряда используется одна двухвходовая логическая схема, на один вход которой подается значение бита аккумулятора, а на другой - значение соответствующего бита слова, расположенного в памяти (М) или одном из регистров (A, B, C, D, E, H ,L ). В микропроцессоре предусмотрено восемь таких двухвходовых схем - по одной для каждого разряда микропроцессора. После выполнения операции результат запишется в аккумулятор, а старое содержимое аккумулятора потеряется. В результате выполнения операции логического умножения все триггеры регистра признаков кроме триггера переноса (Тс) установятся в соответствии с полученным результатом; триггер переноса установится в состояние "0".Триггер полупереноса (Тн) принимает значение разряда А3 результата. На выполнение операции затрачивается один цикл (4 такта). Если ri =М, то число циклов равно 2 (7 тактов)
Пример:
0800) ANA C
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
A1 | A1 | |
A | 11010111=D7 | 10000000=80 |
C | 10100000=A0 | A0 |
FL | ||
PC |
б) "Исключающее ИЛИ"
XRA ri | A(A) "(ri) <B1> | ri |
Эта операция, как и предыдущая, является побитовой; для ее исполнения используются те же регистры. После выполнения команды результат записывается в аккумулятор на место первого операнда. Триггеры признаков, кроме триггеров переноса и полупереноса, устанавливаются в соответствии с результатом. Триггеры Тс и Тн принимают значение "0". Операция выполняется за 1/2 цикла (4/7 ) тактов.
Пример:
0800) XRA C
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
A9 | A9 | |
A | 11010111=D7 | 01110111=77 |
C | 10100000=A0 | A0 |
FL | ||
PC |
в) Логическая операция "ИЛИ"
ORA ri | A(A) Ú(ri) <B1> | ri |
Все сказанное для команды б) справедливо и для этой команды.
Пример:
ORA C
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
B1 | B1 | |
A | 11010111=D7 | 11110111=F7 |
C | 10100000=A0 | A0 |
FL | ||
PC |
Логические операции с непосредственной адресацией
a) Логическая операция "И" со вторым байтом
ANI Данные | A(A) Ù <B2> <B1> | E6 |
<B2> | Данные |
б) Логическая операция "исключающее ИЛИ" со вторым байтом.
XRI Данные | A(A) " <B2> <B1> | EE |
<B2> | Данные |
в) Логическая операция "ИЛИ" со вторым байтом
ORI Данные | A(A) Ú<B2> < B1> | F6 |
<B2> | Данные |
Все сказанное для логических операций над А и ri (п. 4) справедливо и для команд данной группы. Отличие состоит лишь в том, что второй операнд приводится непосредственно в команде во втором ее байте. Каждая операция выполняется за 2 машинных цикла (7 тактов).
Примеры:
0900) XRI 2B
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
EE | EE | |
00101011 =2B | 2B | |
A | 10101010 =AA | 10000001=81 |
FL | ||
PC |
0800) ANI 98
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
E6 | E6 | |
A | AE | |
FL | ||
PC |
0802) ORI FE
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
F6 | F6 | |
FE | FE | |
A | A3 | FF |
FL | ||
PC |
Операции сравнения
а) Сравнение (А) с (ri)
CMP ri | (A) -(ri) <B1> | ri |
Пример:
0100) CMP D
Адрес | Код до выполнения операции | Код после выполнения операции |
BA | BA | |
A | B6 | B6 |
D | CB | CB |
FL | ||
PC |
б) Сравнение (А) со вторым байтом
CPI Данные | (A) - <B2> <B1> | FE |
<B2> | Данные |
Пример:
0125) CPI 25
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
FE | FE | |
A | ||
FL | ||
PC |
Выполнение команд этой группы аналогично выполнению команды "вычитание", но ее результат не загружается в аккумулятор. Хотя по окончании операции исходные данные в аккумуляторе не изменяются, разрядам Z, S и С регистра признаков присваиваются значения в соответствии с полученным результатом.
В качестве регистров ri в команде а) могут быть выбраны A, B, C, D, E, H, L, M. С помощью этой команды можно производить сравнение двух слов на "больше", "меньше", "равно".
На выполнение команды а) затрачивается 1 машинный цикл (4такта) при работе с регистрами или 2 цикла (7 тактов), если данные находятся в памяти (М) по адресу HL . команда б) выполняется за 2 цикла (7 тактов).
4.7.7 Операции циклического сдвига (а).
а) Сдвиг аккумулятора влево без переноса
RLC |
б) Сдвиг аккумулятора вправо без переноса
RRC |
в) Сдвиг аккумулятора влево с переносом
RAL |
г) Сдвиг аккумулятора вправо с переносом
RAR |
Командой этой группы все данные, находящиеся в аккумуляторе и триггере переноса сдвигаются на одну позицию. При этом в командах а) и б) значение выдвигаемого разряда А7 или А0 передается в разряд соответственно А0 или А7 и запоминается в триггере переноса С, а в командах в) и г) триггер переноса используется как дополнительный девятый разряд регистра.
Каждая команда выполняется в течение одного машинного цикла (4 такта). В результате выполнения команды изменяется значение только триггера переноса С, а другие признаки остаются без изменения.
Примеры:
0800) RLC
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
A | 2D | |
FL | ||
PC |
0801) RRC
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
0F | 0F | |
A | 4B | |
FL | ||
PC |
0802) RAL
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
A | 2C | |
FL | ||
PC |
0803) RAR
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
1F | 1F | |
A | 4B | |
FL | ||
PC |
Дополнение аккумулятора
CMA | <B1> | |
7 0 |
С помощью этой команды производится инвертирование всех разрядов аккумулятора. Команда выполняется в течение одного цикла (4 такта). Значение триггеров признаков при этом не изменяется.
Пример:
0823) CMA
Адрес/ регистр | Код до выполнения операции | Код после выполнения операции |
2F | 2F | |
A | F2 | 0D |
FL | ||
PC |