Реализация процессором арифметических операций. Будько М.Б - 24 стр.

UptoLike

23
коде (для положительного множителя в прямом 0, для отрицательногов
дополнительном 1).
Результат умножения отрицательного множимого на любой бит по-
ложительного множителя (беззнаковый операнд считается положитель-
ным) должен быть отрицательным. При выполнении операции сдвига СЧП
i
его старший бит, соответствующий знаковому разряду, автоматически за-
полняется нулем. Поэтому для сохранения знака результата старший бит
СЧП
i
должен быть скорректирован, т.е. должен совпадать со знаком мно-
жимого. Добиться этого можно с помощью сложения СЧП
с беззнаковой
переменной k = , где zn - знаковый разряд множимого (zn = 0
при положительном множимом, zn = 1 при отрицательном). С учетом пер-
вого вида коррекции формулу (*) можно преобразовать к виду:
C = A×B = (((((((((0 + A×b
0
)×2
-1
+ k + A×b
1
)×2
-1
+ k + A×b
2
)×2
-1
+ k +
A ×b
3
)×2
-1
+ k + A×b
4
)×2
-1
+ k + A ×b
5
)×2
-1
+ k + A×b
6
)×2
-1
+ k +
A×b
7
)×2
-1
+ k)×2
8
(*)
3.2.4.2.2 Второй вид коррекции
С помощью коррекции второго вида обеспечивается учет реального
знака операнда, выполняющего функцию множителя.
Очевидно, что для положительного множителя его значение и значе-
ние соответствующей беззнаковой переменной совпадают, и, следователь-
но, результат умножения не требует коррекции.
Для отрицательного множителя (см. пример в п. 3.2.4.1) значение са-
мого множителя -15, а
беззнаковой переменной 241, поэтому нужна кор-
рекция результат умножения. Для ее выполнения необходимо определить
связь между отрицательным множителем и его беззнаковым представлени-
ем. Эту связь можно записать в виде:
-15 = 241 – 256,
т.к. любое 8-разрядное отрицательное число можно представить как раз-
ность его беззнакового представления и 256 = 2
8
.
Таким образом, операция умножения с участием отрицательного
множителя может быть представлена следующим образом:
C = A B = A (D - 2
8
) = A DA 2
8
,
где Dэто беззнаковое представление множителя B.
Следовательно, формула умножения (*) с учетом двух коррекций
может быть записана в общем виде:
C = A×B = (((((((((0 + A×b
0
)×2
-1
+ k + A×b
1
)×2
-1
+ k + A×b
2
)×2
-1
+ k +
A ×b
3
)×2
-1
+ k + A ×b
4
)×2
-1
+ k + A ×b
5
)×2
-1
+ k + A×b
6
)×2
-1
+ k +
A×b
7
)×2
-1
+ k - A×b
7
)×2
8
(*)
z
n
0000000