page26
ADD s
сложение
ADC s
сложение с учетом переноса
SUB s
вычитание
SBC s
вычитание с учетом переноса
AND s
логическое "И"
OR s
логическое "ИЛИ"
XOR s
"исключающее ИЛИ"
CP s
сравнение с аккумулятором
INC t
инкремент
DEC t
декремент
Флаги C, Z, S и H
устанавливаются соответственно результату операции. Флаги P/V
действует в качестве флага переполнения V. Флаг N соответствует биту 4 кода выполняемой
операции и указывает команде DAA (см. ниже), какая из арифметических операций выполнялась -
сложение или вычитание.
Команда CP s выполняется так же, как и SUB s, c той разницей, что по результату операции
лишь устанавливаются флаги, а содержимое аккумулятора не изменяется.
Отдельно можно выделить команды, в которых арифметические и логические операции
производятся только над содержимым аккумулятора:
ADD А
удвоение аккумулятора
ADC А
как ADD A с учётом переноса
SUB A
очистка аккумулятора (А←0), флаги: S←0, Z←1, H←0, P/V←0; N←1, C←0.
SBC A
как SUB А при C=0; когда C=1, содержимое аккумулятора сбрасывается в 0FFH.
Флаги: S←1, Z←0, H←1, P/V←0; N←1, C←1.
AND А
аккумулятор
остается
без
изменений;
в
соответствии
с
его
содержимым
устанавливаются флаги, S←старший бит; Z←1 при А=0, иначе Z←0; P/V←1 при
чётном количестве единиц, иначе P/V←0; N←0; C←0.
OR A
как при AND A.
XOR А
очистка аккумулятора (A←00); флаги - как при AND A.
СР А
аккумулятор без изменений; флаги устанавливается как при SUB A.
Общие операции с аккумулятором и флагами. К этой группе (таблица 5.1.4) относятся
следующие 5 команд:
DAA
десятичная коррекции аккумулятора
CPL
дополнение аккумулятора
NEG
инверсия аккумулятора
CCF
инверсии флага переноса
SCF
установка Флага переноса
Десятичная коррекция аккумулятора используется после сложения либо вычитания чисел в
BCD
(двоично-десятичной)
формате.
В
этом
формате
8-битный
операнд
представляет
собой
двузначное десятичное число, в котором младшей десятичной цифре соответствует младшая
тетрада, а старшей – старшая. Для цифр BCD формата допустимы значения от 0 до 9. Однако,
результат сложения пли вычитания может превысить 9. В этом случае необходима десятичная
коррекция. После команд сложения она действует следующим образом:
1) если содержимое младшей тетрады аккумулятора больше 9 или H=1, то к аккумулятору
добавляется число 6.
2) если содержимое старшей тетрады аккумулятора стало после этого больше 9 или C=1, то
число 6 добавляется и к старшей тетраде аккумулятора.
После вычитания:
1) если H=1, то от аккумулятора вычитается число 6.
2) если C=1, то число 6 вычитается и из старшей тетрады аккумулятора.
Команда CPL побитно инвертирует содержимое аккумулятора (дополнение до 1) Команда
NEG изменяет знак содержимого аккумулятора на противоположный (дополнение до 2), она
соответствует вычитанию содержимого аккумулятора из нуля. С помощью команды SCF флаг
переноса устанавливается в 1, с помощью команды ССF его можно инвертировать.