Команда ADD выполняет сложение указанных операндов, представленных
в двоичном дополнительном коде. Микропроцессор помещает результат
на место первого операнда после того, как сложит оба операнда.
Второй операнд не изменяется. Команда корректирует регистр флагов
в соответствии с результатом сложения. Например, команда
ADD AX,BX
складывает содержимое регистра BX с содержимым регистра AX, и
оставляет результат в регистре AX. Регистр флагов сообщает о том,
был ли результат нулевым, отрицательным, имел ли четность, перенос
или переполнение.
Фиг. 4.8 кратко иллюстрирует варианты команды ADD.
Существуют две формы сложения, 8=битовое и 16=битовое. В различных
формах сложения принимают участие различные регистры. Ассемблер
следит за тем, чтобы операнды соответствовали друг другу.
Содержимое байтового регистра (например, CH) не может быть
прибавлено к ячейке памяти, которая не имеет тип BYTE. Если ячейка
памяти является одним из операндов, она может быть либо
операндом=результатом, либо неизменяемым операндом. Тем самым
команда может прибавить содержимое регистра к ячейке памяти и
возвратить результат в память. Одним из операндов может также быть
непосредственное значение. На Фиг. 4.9 показан листинг ассемблера с
накоторыми арифметическими командами.
Команда сложения с переносом ADC - это та же команда ADD, за
исключением того, что в сумму включается флаг переноса. Для любой
формы команды ADD существует сравнимая с ней команда ADC.
ЪДДДДДДДДї ЪДДДДДДДДї ЪДДДДДДДДї
і AX і і AX і і AX і
і BX і і BX і і BX і
і CX і і CX і ДДДДДДД> і CX і
і DX і і DX і і DX і
АДДДДДДДДЩ АДДДДДДДДЩ АДДДДДДДДЩ
ЪДДДДДДДДї + ЪДДДДДДДДї ЪДДДДДДДДї