Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций от мешка 1.doc
Скачиваний:
512
Добавлен:
09.04.2015
Размер:
4.36 Mб
Скачать

2.8.3. Умножение модулей двоично-десятичных чисел

Операция умножения сводится к образованию и многократному сложению частичных двоично-десятичных произведений.

Алгоритм выполнения операции состоит в следующем:

  1. Сумма частичных произведений полагается равной нулю.

  2. Анализируется очередная тетрада множителя, и множимое прибавляется к сумме частичных произведений столько раз, какова цифра, определяемая этой тетрадой.

  3. Сумма частичных произведений сдвигается на одну тетраду, и повторяются действия, указанные в п. 2, пока все цифры (тетрады) множителя не будут обработаны. Направление сдвига зависит от того, какой вариант перемножения выбран – "старшие разряды вперед" или "младшие разряды вперед".

  4. Каждая операция суммирования завершается десятичной коррекцией, соответствующей случаю суммирования двоично-десятичных чисел без избытка 6 (т.е. необходимо добавить 0110 к тем тетрадам, из которых был перенос или в которых f=1).

Пример.

Z=X*Y= 25(10)* 13(10)= 325(10).

X = 25(10)= 0010 0101(2-10); Y = 13(10)= 0001 0011(2-10).

Для решения примера выберем вариант перемножения "старшие разряды вперед". В соответствии с п. 1 алгоритма полагаем сумму частичных произведений P0=0. (Частичные произведения будем обозначать Pi).

Формирование второго частичного произведения - более длительная операция, поскольку вторая анализируемая тетрада содержит 3(10), поэтому каждая операция суммирования требует проверки необходимости коррекции. Вычислим P2, последовательно суммируя слагаемые, образующие P2:

Таким образом, второе частичное произведение, состоящее из трех слагаемых, имеет вид

P2= 0111 0101.

Теперь можно вычислить сумму первого и второго частичного произведений, т.е. результат:

Окончательный результат: Z = 0011 0010 0101(2-10)= 325(10).

Следует отметить, что в данном случае при суммировании операндов не возникало переносов, поэтому коррекция осуществлялась только по признаку f=1.

2.8.4. Деление модулей двоично-десятичных чисел

Операция деления выполняется путем многократного вычитания, сдвига и анализа результата подобно тому, как это делается при обычном делении. В настоящем курсе эта операция не рассматривается. Информация о ней может быть найдена в литературе, приведенной в конце главы.

2.9. Нарушение ограничений эвм

При выполнении арифметических операций возможны ситуации, когда нарушаются ограничения, связанные с конечной длиной разрядной сетки ЭВМ. При этом в ЭВМ формируются признаки соответственно:

  • для ЧФЗ:

- переполнение, когда результат не вмещается в отведенное количество бит (имеются в виду ЧФЗ справа от МЗР);

  • для ЧПЗ:

- положительное переполнение порядка, когда PZ>Pmax;

- отрицательное переполнение порядка, когда PZ<Pmin(исчезновение порядка).

Конкретная реакция различных ЭВМ и различных операционных систем на признаки нарушения ограничений в общем случае различна. Однако все они обязательно выполняют следующие операции:

- при обработке программы после выполнения операций, где возможно переполнение, предусматривается анализ соответствующего признака и в зависимости от его значения, реализуется то или иное конкретное действие;

- при возникновении признака в любом месте программы в ЭВМ формируется запрос на прерывание и выполняется программа его обслуживания.