Смекни!
smekni.com

Арифметические устройства (стр. 3 из 3)

Таблица 15.5. Пошаговый процесс умножения двоичных чисел путем многократного сложения

Сначала множимое и множитель загружаются в регистр множимого и вычитающий счетчик множителя соответственно, а регистр произведения обнуляется. После первого шага в регистре произведения появляется число 00110, а множитель уменьшается на 1. После второго шага в регистре произведения оказывается сумма множимого (110) и числа 00110, множитель уменьшается на 1. Таким образом процесс завершается после четырех шагов, когда счетчик множителя содержит 000, а регистр произведения 11000 (десятичное число 24). Но этот способ не всегда удобен. Например, для нахождения произведения 56*12 нужно определить сумму 12 слагаемых, каждое из которых равно 56. Такой процесс вычисления занимает слишком много времени.

Вторым способом умножения двоичных чисел является способ сложения со сдвигами.

Вернемся к примеру, показанному на рис. 15.19. В этом примере двоичное число 111 умножается на двоичное число 101. При рассмотрении данного примера можно сделать следующие выводы:

1) Частичное произведение всегда равно 000, если множитель равен 0, и равно множимому, если множитель равен 1.

2) Число разделов в регистре произведения должно быть в два раза больше числа разделов в регистре множимого.

3) При сложении первое частичное произведение сдвигается на одну позицию (разряд) вправо (по отношению ко второму произведению).

На основе сделанных выводов можно построить схему для умножения двоичных чисел (рис. 15.22).

Рис. 15.22. Структурная схема умножителя с использованием операций сложения и сдвига

В исходном состоянии множимое (111) загружается в регистр, регистр-накопитель очищен (установлен в состояние 0000) и множитель (101) загружен в регистр. При этом регистр-накопитель и регистр-множителя составляют единый регистр (рис. 15.22.). Рассмотрим пошаговый процесс умножения двоичных чисел.

1) Загрузка исходных данных в регистры.

2) Сложение содержимого регистра-накопителя и регистра-множимого, инициируемое логической 1 младшего разряда на управляющую шину.

3) Сдвиг содержимого регистра-накопителя и регистра-множителя на одну позицию вправо. При этом младший разряд регистра-множителя теряется.

4) Регистр-множитель подает логический 0 на управляющую шину. Этот сигнал блокирует сумматор и сложение не производится.

5) Сдвиг содержимого регистра – накопителя и регистра – множителя на одну позицию вправо.

6) Сложение содержимого регистра – накопителя и регистра – множимого, инициируемое логической 1 младшего разряда регистра – множителя на управляемую шину.

7) Сдвиг содержимого регистра – накопителя и регистра – множителя на одну позицию вправо.

В результате этих шагов произведение (100011) находится сразу в двух регистрах (табл. 15.6).

Таблица 15.6. Пошаговый процесс умножения с использованием операций сложения и сдвига

В таблицах 15.5 – 15.6 показаны принципы умножения двумя способами: путем многократного сложения и путем сложений со сдвигами. При этом микропроцессоры могут и не содержать в своих АЛУ умножителей. Конкретный способ умножения можно запрограммировать. Таким образом задавая процессору программу, он выполнит последовательность операций, которая обеспечит умножение двоичных чисел. Благодаря этому существенно уменьшается число электронных схем в центральном процессоре.

15.10. Сложение и вычитание чисел, представленных в дополнительном коде

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

Рассмотрим 4 – разрядный дополнительный код. Старший разряд отводится под знак числа: 0 – соответствует положительному числу, 1 – отрицательному. Три разряда отводятся абсолютной величине числа. В табл. 15.7 приведен 4 – разрядный дополнительный код чисел от +7 до –8.

Таблица 15.7. Представление двоичных чисел со знаком.

Из табл. 15.7 видно, что дополнительный код положительных чисел совпадает с обычным представлением двоичного числа. Для получения дополнительного кода отрицательного числа нужно сначала сформировать дополнение этого числа до 1, а затем прибавить 1. На рис. 15.23 показана процедура получения дополнительного кода отрицательного числа.

Рис. 15.23. Пример преобразования числа со знаком в дополнительный код

Эта процедура состоит из трех шагов:

1) десятичное число преобразуется к его двоичному эквиваленту соответствующего положительного числа;

2) находится дополнение полученного двоичного числа до 1, путем замены всех единиц на нули и всех нулей на единицы;

3) к полученному дополнению до 1 прибавляется 1. В результате сложения получаем дополнительный код числа.

Процедура перехода от дополнительного кода к двоичному числу, по которому затем определяется десятичное число, показано на рис. 15.24. Обратное преобразование выполняется следующим образом:

1) находим дополнение до 1 для исходного дополнительного кода, путем замены всех единиц на нули и всех нулей на единицы;

к полученному дополнению до 1 прибавляется 1 путем двоичного сложения. В результате получаем искомое двоичное число, но поскольку в старшем разряде дополнительного кода стоит 1, соответствующее десятичное число является отрицательным.

Рис. 15.24. Пример преобразования дополнительного кода в двоичное число

Рассмотрим примеры на сложение и вычитание чисел, представленных в дополнительном коде (рис. 15.25).

Рис. 15.25. Примеры сложения и вычитания чисел в дополнительном коде

Из рис. 15.25 можно сделать выводы, что сложение чисел, представленных в дополнительном коде, осуществляется обычным способом, за исключением случая, когда в результате получается 5 – разрядная комбинация. В этом случае самый старший разряд отбрасывается и остается дополнительный код суммы.

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

Сложение и вычитание чисел, представленных в дополнительном коде, можно осуществить с использованием сумматоров.

Рассмотрим схему 3-разрядного сумматора – вычитателя, работающего с числами, представленными в дополнительном коде (рис. 15.26).

Рис. 15.26. Структурная схема 3-разрядного сумматора – вычитателя чисел в дополнительном коде

Для сложения и вычитания двух чисел, представленных в 3-разрядном дополнительном коде, используется три полных сумматора. Для задания режима работы устройства на входе В каждого сумматора введем элемент исключающее ИЛИ. При подаче логического 0 устройство складывает двоичные комбинации

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

Для выполнения операции вычитания чисел, представленных в дополнительном коде, на управляющем входе задания режима устанавливается уровень логической 1. В этом случае элементы исключающее ИЛИ инвертируют информационные сигналы, поступающие на входы В. На входе

полного сумматора разряда единиц устанавливается высокий уровень сигнала. Инвертирование информационных сигналов элементами исключающее ИЛИ с прибавлением 1 на входе
сумматора единиц соответствует дополнению до 1 дополнительного кода вычитаемого и последующему сложению с 1 младшего разряда. Это эквивалентно дополнению до 2 дополнительного кода вычитаемого
. В результате этих действий на выходе отображается дополнительный код разности.