СЛОЖЕНИЕ И ВЫЧИТАНИЕ ДВОИЧНО-ДЕСЯТИЧНЫХ ЧИСЕЛ В МК

February 24, 2011 by admin Комментировать »

При сложении двух двоично-десятичных чисел А = ап-\ап-2-" и 5 = bn-\bb-2-"b\b{) поступают следующим образом. Если оба операнда имеют одинаковые знаки, то выполняют сложение модулей этих чисел (\А\ + |5|), а знаковый разряд суммы определяют по знаку одного из слагаемых. Если операнды имеют разные знаки, то предварительно знак суммы устанавливают по знаку первого операнда А, Затем производят вычитание модулей чисел (1^1 – |5|). Если полученная разность больше нуля, знак суммы сохраняется без изменений. Если разность меньше нуля, следует найти дополнительный код разности и изменить знак суммы на противоположный.

При сложении двух чисел А и В, представленных в 2-10 коде, с весом 8—4-2-1 в каждой тетраде, в одном разряде суммы S = А-\- В можно получить результаты:

1) 5; < 9; не требует коррекции;

2)   10 < 5;< 15; требует коррекции путем увеличения 5;на шесть с образованием переноса из тетрады;

3)   Si > 15; требует коррекции путем увеличения 5; на шесть. В этом случае перенос из тетрады образуется автоматически при сложении операндов до выполнения коррекции.

В микроконтроллерах с архитектурой MCS-51 коррекция осуществляется аппаратно при выполнении команды 2-10 коррекции. При отсутствии схемы 2-10 коррекции, как в микроконтроллерах AVR, поступают следующим образом. При сложении двоично- десятичных чисел добавляют число, каждый разряд которого равен шести. В этом случае, если вычисляемая поразрядная сумма Si < 9, перенос из тетрады не возникнет и избыточное значение шесть подлежит удалению. Во всех остальных случаях добавленное в разряд значение шесть удаляется автоматически с переносом из тетрады в процессе сложения. При таком способе сложения программная реализация упрощается, так как для коррекции результата в тетраде проверяется лишь один признак – наличие или отсутствие переноса из тетрады.

Таким образом, сложение беззнаковых чисел (как и модулей 1^1 + |5|) можно выполнить по алгоритму, схема которого приведена на рис. 3.6:

1)    двоично-десятичный код первого операнда

Рис. 3.7. Алгоритм вычитания 2-10 чисел

Пример. А = 23,В = 62. Найти разность^ – В.

Двоично-десятичное представление чисел А и В: А = 0010 ООП, 5 = = 0110 0010.

Дополнение числа В:= 1001 1110. Вычитая А – В = А

получаем R’:

Переноса нет: результат отрицательный, флаг заема равен 1.

Формируем дополнение [Л’]доп ^ выполняем коррекцию:

Результат: флаг знака разность 39.

Когда отрицательный результат требуется сохранить в дополнительном коде, шаг формирования дополненияопускается. Можно сразу переходить к коррекции (вычитанию шести в тех тетрадах, где не было переноса) Программный код процедуры 2-10 вычитания однобайтовых операндов для этого случая приведен в программе 3.1.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты