Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Команды сложения






Команда сложения ADD и команда сложения с добавлением переноса ADC

Команды ADD (add - сложить) и ADC (add with carry - сложить с переносом) могут складывать как 8-, так и 16-битовые операнды. Команда ADD складывает содержимое операнда-источника и операнда-приемника и помещает результат в операнд-приемник. Формат команды:

ADD приемник, источник

В символической нотации ее действия можно описать как:

приемник: = приемник + источник

Команда ADC делает то же, что и команда ADD, но складывает не два а три слагаемых. Приемник, источник и флаг переноса. Формат команды:

ADC приемник, источник + CF

В символической нотации ее действия можно описать как:

приемник: = приемник + источник + перенос

Перенос при сложении двоичных чисел аналогичен переносу при сложении десятичных чисел в столбик. Когда ЭВМ складывает двоичные числа и сумма не помещается в операнде-приемнике, то генерируется перенос. Как известно, 8-битовый регистр может содержать значения без знака в диапазоне от 0 до 255. Если мы, например, выполним двоичное сложение чисел 250 и 10, то получим

1111 1010; двоичное представление числа 250

+ 0000 1010; двоичное представление числа 10

1 0000 0100; ответ: десятичное значение 260

Результат верен, но занимает 9 двоичных битов. Если при выполнении этой опера­ции мы использовали 8-битовые регистры, то младшие 8 битов будут занесены в регистр-приемник, а девятый бит - во флаг переноса CF.

Теперь нетрудно понять, почему микропроцессор 8088 имеет две разные команды сложения. Одна из них (ADD) может складывать значения, представля­емые байтами или словами, а также младшие части значений повышенной точнос­ти. Другая команда (ADC) используется для сложения старших частей значений повышенной точности.

Например, команда

ADD AX, CX

складывает 16-битовые значения регистров АХ и СХ и возвращает результат в регистр АХ. Если операнды имеют длину более 16 битов, то можно восполь­зоваться следующей последовательностью команд которая складывает 32-битовое число, находящееся в регистрах СХ и DX, с 32-би­товым числом, находящимся в регистрах АХ и ВХ

ADD АХ, СХ; Сначала сложить младшие 16 битов, а затем

ADC BX, DX; старшие 16 бит

Складываемые операнды могут находиться в памяти или в регистре или иметь непосредственное значение. Например:

ADD АХ, MEM_WORD; Добавить содержимое ячейки памяти к регистру

ADD MEM_WORD, AX; или наоборот.

ADD AL, 10; Добавить константу к регистру

ADD MEM_BYTE, OFH; или к ячейке памяти

Допускается большинство возможных комбинаций, но нельзя добавить значение одной ячейки памяти к другой или использовать в качестве приемника непосред­ственное значение.

Команды ADD и ADC могут воздействовать на шесть флагов:

Флаг переноса CF равен 1, если результат сложения не помещается в операн­де-приемнике; в противном случае он равен 0.

Флаг четности PF равен 1, если результат имеет четное число битов со значени­ем 1; в противном случае он равен 0.

Вспомогательный флаг переноса AF равен 1, если результат сложения десятич­ных чисел требует коррекции; в противном случае он равен 0.

Флаг нуля ZF равен 1, если результат равен 0; в противном случае он равен 0.

Флаг знака SF равен 1, если результат отрицателен (старший бит равен 1); в противном случае он равен 0.

Флаг переполнения OF равен 1, если сложение двух чисел одного знака (оба положительные или оба отрицательные) приводит к результату, который превышает диапазон допустимых значений приемника в обратном коде, а сам приемник при этом меняет знак. В противном случае флаг OF равен 0.

Флаги SF и OF имеют смысл только при сложении чисел со знаком, а флаг AF -

только при сложении десятичных чисел.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.