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

Команды арифметических операций предназначены для выполнения операций сложения, сложения с переносом, вычитания, вычитания с заемом, инкрементирования, декрементирования, десятичной коррекции аккумулятора. Эти команды оперируют с данными в памяти и регистрах. Во всех случаях (кроме указанных исключений) устанавливаются признаки (флаги) нуля Z, знака S, четности P, переноса C и вспомогательного переноса AC. Все операции вычитания выполняются с использованием дополнительного кода, устанавливают 1 в разряде переноса для указания переноса и сбрасывают его для указания отсутствия переноса. В таблице 2.6 приведены команды арифметических операций.

Таблица 2.6 Команды арифметических операций

Мнемоника команды Код операции Количество байтов в команде Время выполнения команды, циклы Выполняемые действия
ADD R 10000SSS 1 1 (A) (A)+(R)
ADD M 10000110 1 2 (A) (A)+M(HL)
ADI data 11000110 2 2 (A) (A)+(байт2).
ADC R 10001SSS 1 1 (A) (A)+(R)+(C)
ADC M 10001110 1 2 (A) (A)+M(HL)+(C).
ACI data 11001110 2 2 (A) (A)+(байт2)+(C)
DAD RP 00RP1101 1 3 (HL) (HL)+(RP). Устанавливается только флаг C.
DAA 00100111 1 1 Десятичная коррекция (A)
SUB R 10010SSS 1 1 (A) (A)-(R).
SUB M 10010110 1 2 (A) (A)-M(HL)
SUI data 11010110 2 2 A) (A)-(байт2).
SBB R 10011SSS 1 1 (A) (A)-(R)-(C)
SBB M 10011110 1 2 (A) (A)-M(HL)-(C)
SBI data 11011110 2 2 (A) (A)-(байт2)-(C).
INR R 00DDD100 1 1 (R) (R)+1. Флаг C не устанавливается
INR M 00110100 1 3 M(HL) M(HL)+1. Флаг C не устанавливается
INX RP 00RP0011 1 1 (RP) (RP)+1. Флаги не устанавливается
DCR R 00DDD101 1 1 (R) (R)-1. Флаг C не устанавливается
DCR M 00110101 1 3 M(HL) M(HL)-1. Флаг C не устанавливается
DCX RP 00RP1011 1 1 (RP) (RP)-1 Флаги не устанавливается