В верхней строке вычитаемое приведено в прямом коде (на выходах регистра R2). Во второй строке то же число записано в обратном коде (на выходах того же регистра). В третьей строке записано уменьшаемое (регистр R1) В четвертой строке находится сумма уменьшаемого с вычитаемым в обратном коде (регистр R).

Эту сумму БВО с регистра R. переводит на R1 (предварительно очистив этот регистр). На R2 БВО заносит единицу. После добавления единицы на R появляется число, указанное в нижней строке. Окончательно БВО отправляет в оперативную память только число 1100 (т. е.12), выделенное жирным шрифтом, т. к. в противном случае разность оказалась бы больше уменьшаемого (что невозможно).

Операция умножения. Вместо умножения сумматор производит повторение множимого в качестве слагаемого столько раз, сколько единиц Чсодержится во множителе. Всего производится операций сложения

ОС = Ч-1 (9.2)

Каждое следующие слагаемое сдвигается влево на одну позицию. Если множитель содержит 0, то следующее слагаемое сдвигается влево на две позиции.

Управляющая умножением система БВО переводит множитель на свой внутренний регистр. Производится повторная запись множимого со сдвигом на необходимое число позиций. Сумматору подаются команды на выполнение сложения

Таблица 9.3. Умножение чисел в процессоре (21*11=231)

Регистр

Позиции

7

6

5

4

3

2

1

0

Множитель

*

1

0

1

1

Множимое

R1

1

0

1

0

1

Множимое

R2

1

0

1

0

1

Сумма

R

1

1

1

1

1

1

Сумма

R1

1

1

1

1

1

1

Множимое

R2

1

0

1

0

1

Произведение

R

1

1

1

0

0

1

1

1

* Переводится с R2 в БВО

НЕ нашли? Не то? Что вы ищете?

В примере (таблица 9.3) множитель содержит четыре цифры, в т. ч. три единицы (Ч=3) и ноль. Согласно формуле (9.2) множимое повторяется в качестве слагаемого три раза, в 2-х операциях сложения (ОС =2). В строке 3 множимое сдвигается влево на 1 позицию. В строке 6 оно же сдвигается уже на 3 позиции (с учетом ноля). Сумма в последней строке дает искомое произведение. Операция деления. Вместо деления сумматор производит повторные операции вычитания делителя из делимого (точнее – сложение с использованием обратного кода). Операции вычитания производятся, начиная с наиболее высоких позиций делимого. При каждой операции вычитания в дополнительный регистр заносится единица, либо ноль – последнее, если при данной попытке вычитания величина остатка с добавленной к нему цифрой из следующей позиции делимого окажется меньше делителя.

Рассмотрим приведенный в таблице 9.4 пример. Допустим, что частное должно быть получено с точностью до минус второй позиции (т. е. до 2 = ¼ = 0.25).

Напомним, что высший разряд частного равен разности числа позиций делимого и делителя, если они записываются, начиная с той же самой крайней левой позиции. Если же делитель записывается со сдвигом на одну позицию вправо, то из разности высших разрядов следует вычесть единицу. В примере наибольшая позиция делимого – 5-я, делителя – 2-я. При вычитании он, как и делимое, записывается, начиная с 5-й позиции (т. к. 110>101). Поэтому частное записывается с 3-ей позиции

После первого вычитания в 3-й позиции образуется остаток 1. Снос в этот остаток нуля из 2-й позиции делимого с образованием двоичного числа 10 не позволяет проводить второе вычитание (10<101), поэтому в частном на 2-й позиции записывается нуль. То же происходит и после сноса 0 из 1-й позиции делимого (100<101). В этой позиции частного также сохраняется 0.

Вычитание (с записью 1 на 0 - ю позицию частного) оказалось возможным только после сноса 1 из нулевой позиции делимого.

Далее описанным способом определяются значения частного на –1-й и на – 2-й позициях, после чего процесс завершается, ввиду достижения заданной точности. Полученное значение частного 1001.11 = 9.75. Для большего приближения к точному значению 9.8 циклы вычитания необходимо продолжить.

Таблица 9.4 Деление чисел в процессоре (49/5 = 9.8)

Регистр

Позиции

5

4

3

2

1

0

-1

-2

Делимое

R1

1

1

0

0

0

1

Делитель

R2

1

0

1

Остаток

R

1

Частное

*

1

Остаток

R1

1

0

0

1

Делитель

R2

1

0

1

Остаток

R

1

0

0

Частное

*

1

0

0

1

Остаток

R1

1

0

0

0

Делитель

R2

1

0

1

Остаток

R

1

1

Частное

*

1

0

0

1

1

Остаток

R1

1

1

0

Делитель

R2

1

0

1

Остаток

R

1

Частное

*

1

0

0

1

1

1

* Дополнительный регистр

Рекомендуемая литература: Осн. 3 с. 211-221

Контрольные вопросы

1 Важнейшие элементы процессора

2 Структура команды, откуда она поступает и как работает в

процессоре

3 Последовательность выполнения операции сложения

4 Принцип согласно которому сумматор выполняет вычитание

5 Последовательность выполнения операции вычитания

6 Принцип согласно которому сумматор выполняет умножение

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29