Рефераты. Выполнение арифметических операций в АЛУ

Для получения смещенного порядка суммы в Сч1 [0¸7] нулевой разряд Сч1[0] обнуляется, в первый разряд Сч1[1] заносится инвертированное значение первого разряда сумматора См[1], а в разряды Сч1[2¸7] заносятся соответствующие разряды сумматора См[2¸7].




Умножение мантисс производится в блоках с 10 по 15 и осуществляется по следующему алгоритму:

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

2.      В Рг1, содержащем множимое, разряды с нулевого по седьмой (знаковый разряд и смещенный порядок) обнуляются, так как знак был скопирован в триггер знаков на этапе приема операндов, а действия над смещенным порядком выполнены на этапе вычисления смещенного порядка произведения.

3.      В счетчик циклов СчЦ заносится число разрядов мантиссы.

4.      В зависимости от значения младшего разряда мантиссы множителя Рг2[31] к сумме частичных произведений прибавляется либо 0, либо мантисса множимого, для чего соответствующее значение присваивается в РгА.

5.      Полученная сумма передается в РгСм со сдвигом вправо на один разряд и записывается в РгВ.

6.      Мантисса множимого, хранящаяся в Рг2, с помощью Рг2’ сдвигается вправо на один разряд.

7.      СчЦ уменьшается на единицу.

8.              Пункты 4,5,6,7 повторяются до тех пор, пока СчЦ не станет равен нулю.

Формирование окончательного результата производится в блоках с 16 по 25. Результат, полученный на этапе умножения мантисс, в случае необходимости нормализуют. Для этого проверяется старший разряд мантиссы произведения. Если он равен нулю, то происходит сдвиг мантиссы на один разряд влево и уменьшение порядка произведения на единицу. Это происходит до тех пор, пока старший разряд мантиссы произведения не станет равен единице.


Для получения окончательного порядка произведения анализируются значения триггера переполнения Тг1 и Сч1[0¸1]. Если Тг1=0 и разряды Сч1[0¸1]=11, то это означает отрицательное переполнение. При этом фиксируется нулевой результат умножения. Если же триггер переполнения Тг1=1 и разряды Сч1[0¸1]=00, то произошло положительное переполнение и генерируется прерывание по переполнению. Если переполнения нет, то в РгСм[8÷31] находится нормализованная мантисса произведения. Если значения в триггерах знаков множимого и множителя равны, то знак произведения – положительный, иначе знак произведения – отрицательный. Знак произведения фиксируется в нулевом разряде РгСм:

РгСм[0]:=

Смещённый порядок из Сч1[1¸7] заносится в соответствующие разряды РгСм[1¸7].

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

Пример. Пусть X=+2,5, Y=+6,25.

Вычислить Z=X×Y=2,5 × 6,25. X, Y, Z - числа с

плавающей запятой.

Используем алгоритм умножения чисел с плавающей запятой.

Представим множимое (рис. 4.4) и множитель (рис. 4.15) в формате с плавающей запятой, где для мантиссы выделено 10 разрядов, а для порядка - 7 разрядов. Множимое в формате числа с плавающей запятой показано на рис. 4.4.

Веса разрядов

26

25

24

23

22

21

20

21

20

2-1

2-2

2-3

2-4

2-5

2-6

2-7

2-8

0

1

0

0

0

0

1

0

1

0

1

0

0

0

0

0

0

0

знак

смещённый порядок

мантисса

Рис. 4.4. Множимое Х = 2,5 в формате с плавающей запятой

Сделаем проверку множимого (т.е. произведём обратное преобразование). Необходимо напомнить, что если старший разряд смещённого порядка равен 1, то порядок числа положительный, иначе – отрицательный. Для преобразования смещённого порядка в несмещённый необходимо из смещённого порядка вычесть двоичное число 1000000b (или 26). Если из смещённого порядка делимого pxсм =1000010b вычесть 1000000b, то несмещённый порядок делимого px будет равен 0000010b, или десятичному числу 2. Таким образом:

X = mx ´ = 0,1010000000 ´ 22 = 10,10000000 =
= 1 ´ 21 + 0 ´ 20 + 1 ´ 2-1 + 0 ´ 2-2 + 0 ´ 2-3 + 0 ´ 2-4 + 0 ´ 2-5 +0 ´ 2-6 + 0 ´ 2-7 + 0 ´ 2-8 = 2,5,

где mx – нормализованная мантисса множимого;

px = 2 – порядок множимого (несмещенный) в десятичном

виде.

Веса разрядов

26

25

24

23

22

21

20

22

21

20

2-1

2-2

2-3

2-4

2-5

2-6

2-7

0

1

0

0

0

0

1

1

1

1

0

0

1

0

0

0

0

0

Знак

смещённый порядок

мантисса

Рис. 4.5. Множитель Y = 6,25 в формате с плавающей запятой

Аналогично сделаем проверку делителя:

Y = my ´ = 0,1100100000 ´ 23 = 110,0100000 =
= 1 ´ 22 + 1 ´ 21 + 0 ´ 20 + 0 ´ 2-1 + 1 ´ 2-2 + 0 ´ 2-3 + 0 ´ 2-4 + 0 ´ 2-5 + 0 ´ 2-6 + 0 ´ 2-7 = 6,25,

где my – нормализованная мантисса множителя;

py = 3 – порядок множителя (несмещенный) в десятичном

виде.

Рассмотрим выполнение примера поэтапно.

Прием операндов Х и Y. Множимое заносится в Рг1. В ТгЗн1 запоминается знак множимого. В Рг2 заносится множитель. Знак множителя запоминается в ТгЗн2.

Проверка мантисс сомножителей на равенство нулю. Так как старшие разряды мантисс сомножителей равны единице, то умножение продолжается.

Вычисление смещённого порядка произведения. Необхо- димо сложить на сумматоре смещённый порядок множимого (РгА) и смещённый порядок множителя (РгВ). Необходимо учесть, что для сложения порядков используется дополнительно нулевой разряд.

В результате сложения на выходе сумматора См[0¸7] сформировалась сумма порядков сомножителей (рис. 4.6).

Разряды

[0]

[1¸7]

[8¸17]

Комментарий

РгА

0

1000010

0000000000

В РгА[1¸7] смещённый порядок множимого px.см

РгВ

0

1000011

0000000000

В РгВ[1¸7] смещённый порядок множителя py.см

См.

1

0000101

0000000000

В См[1¸7] сумма смещенных порядков px.см + py.см

Сч1

0

1000101

 

В Сч1[1¸7] смещённый порядок произведения pz.см

Рис. 4.6. Суммирование смещенных порядков

Анализируем значения двух старших разрядов См. Так как См[0¸1]=10, то получен положительный, не переполненный порядок (это фиксируется в Тг1). В смещенный он преобразуется инверсией первого разряда См[1]. Итак, pz.см = =1000101 b. Результат заносим в разряды Сч1[1¸7], а в нулевой разряд Сч1[0]:=0.

Умножение мантисс. Оформим умножение мантисс в виде таблицы (табл. 4.1) с указанием номеров блоков, использующихся в алгоритме и двоичных кодов сомножителей:

Множимое Рг1 = 0 1000010 1010000000 (см. рис. 4.4)

Рг1 = 0 0000000 1010000000– после обнуления

разрядов знака и порядка.

Множитель Рг2 = 0 1000011 1100100000 (см. рис. 4.5).

Табл. 4.1. Пример умножения мантисс

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.