Доставка цветов в Севастополе: SevCvety.ru
Главная -> Появление первого микропроцессора

0 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

Табл. 1.13. Тесты умножения формата 24-24=24 (дробные двоичные числа в дополнительном коде)

Представление чисел

шестнадцатеричное

десятичное

400000 - 400000=200000 0.5 - 0.5=0.25

7FFFFF - 7FFFFF=7FFFFC 0.9999998 - 0.9999998=0.9999996 555555 - 555555=38Е38С 0.6666666 - 0.6666666=0,4444443 АААААА-АААААА=38Е38Е (-0.6666666) - (-0.6666666)=0,4444443 555555-АААААА=С71С72 0,6666666 • (-0,6666666)= -0.4444443 FFFFFF- FFFFF=000000 (-0.0000001) - (-0.0000001)=0.0000000

1.3.4.5. Формат 16-16=32

Программа УДФ32 в отличие от предыдущих программ умножения знаковых чисел выполняет операции над знаковыми разрядами так же, как над цифровыми. В основе ее лежит алгоритм Бута [5, 61]:

07с0

ORG 7С0Н

УДФ32:

SПОДПРОГРАММА УМНОЖЕНИЯ ДВОИЧНЫХ ЧИСЕЛ В ДОПОЛНИТЕЛЬ-SHOM КОДЕ С ФИКСИРОВАННОЙ ПОСЛЕ ЗНАКОВОГО РАЗРЯДА ?ЗАПЯТ0Й ФОРМАТА 16»16=32. ?МЕТОД УМНОЖЕНИЯ-АЛГОРИТМ БУТА.

!ВХОДНЫЕ ПАРАМЕТРЫ:<ВгС)-МНОЖИТЕЛЬг(ВгЕ)-МНОЖИМОЕ.БЫ-;ХОДНЫЕ ПАРАМЕТРЫ:(НгЕ,Б,С)-ПР0ИЗБЕДЕНИЕ.ИСПОЛЬЗУЮТСЯ гВСЕ РЕГИСТРЫ.СОХРАНЯЕТСЯ (ВгЕ).ГЛУБИНА СТЕКА-2. !0«ЕНКА:ДЛИНА-72 БАЙТ.ВРЕМЯ-НЕ БОЛЕЕ 2703 ТАКТА.

гОБНУЛЕНИЕ ТЕКУЩЕЙ СУММЫ ЧП

07с0 af

07с1 67

07с2 6f

f(H»L)=0

;проверка множимого

07сз б2

07с4 бз

07с5 с2сб07

HEPl

;если множимое не 0

07с8 47

07с9 4f

г(в,с)=о

07са с9

;проверка множителя

о/сб 78

пер1: мои

07сс б1

07cd с8

;если множитель=0

07се зе10

а.16

!счетчик циклов

07d0 f5

FDSH

!сохранение счетчика

07в1 af

f(cy)=0

07в2 81

;(а)-млб множителя

;анализ младшего бита множителя и переноса:

07вз b2df07

цикл: jnc

гер2

;если (х.су)=(х.о)



07D6 Е601

;ВЫДЕЛЕНИЕ БИТА

07D8 С2ЕА07

ПЕРЗ

?ЕСЛИ <X.CY)=(1,1)

гСЮЖЕШЕ СУННЫ ЧП С МНОЖИМЫМ ПРИ (XrCY) = <Ofl)

07DB 19

07DC СЗЕА07

ПЕРЗ

5анализ ПАРЫ БИТ (X,CY)=(XtO)

07DF ЕЙ01

ПЕР2! ANI

J ВЫДЕЛЕНИЕ БИТА

07Е1 САЕА07

ПЕРЗ

!.ЕСЛИ (XfCY) = (0,0)

?ВЫЧИТАНИЕ МНОЖИМОГО ИЗ СУММЫ ЧП ПРИ (XrCY)=(1.0)

07Е4 7D

07Е5 93

07Е6 6F

07Е7 ТС

07Е8 9А

07Е9 67

;ПРОВЕРКА КОНЦА ЦИКЛА

07ЕА Fl

ПЕРЗ: POP

07ЕВ ЗВ

07ЕС F5

PUSH

гСОХРАНЕНИЕ СЧЕТЧИКА

07ED СА0208

ПЕР4

?ЕСЛИ СЧЕТЧИК-0

SАРИФМЕТИЧЕСКИЙ СДВИГ

ВПРАВО СУММЫ ЧП И МНОЖИТЕЛЯ

07F0 7С

07F1 FE80

07F3 3F

;(CY>=3HAK СУММЫ ЧП

07F4 IF

07F5 67

07F6 711

07F7 IF

07F8 6F

07F9 78

ArB.

07FA IF

07FB 47

07FC 79

07FB IF

07FE 4f

07FF C3D307

ЦИКЛ

!ЗАЦИКЛИВАНИЕ

;КОНЕЦ ЦИКЛА

0802 3EFE

ПЕР4: HVI

A»OFEH

JОБНУЛЕНИЕ МЛАДШЕГО

0804 Al

гБИТА ПРОИЗБЕЛЕНИЯ

0805 4F

C>A

0806 Fl

sБАЛАНС СТЕКА

0807 C9

0000

Особенность алгоритма состоит в сложении (вычитании) в каждом цикле умножения СЧП и ММ в зависимости не от значения очередного разряда МН, как обычно, а от изменения очередного разряда множителя относительно его предыдущего разряда. При изменении вида 0->1 производится сложение СЧП с ММ, вида 1-0 - вычитание ММ из СЧП, вида 0-0 или 1-1-сдвиг СЧП. Сопоставление данной программы с наиболее близкой к ней по функциям УД32 показывает, что по быстро-



действию программа УДФ32 более чем в два раза проигрывает, но по затратам памяти на 29 % экономичнее (с учетом подпрограмм для УД32). Тестовые данные для программы УДФ32 можно легко получить из табл. 1.10.

1.4. УМНОЖЕНИЕ ДЕСЯТИЧНЫХ ЧИСЕЛ

Умножение десятичных чисел, как и умножение двоичных чисел, производится путем нахождения ЧП и СЧП, где ЧП представляет собой двоично-десятичное произведение десятичной цифры МН на десятичную цифру ММ. Отличия десятичного умножения от двоичного состоят в том, что, во-первых, выделение цифр МН и ММ для их умножения не сводится к однократному двоичному сдвигу, а требует специальной процедуры распаковки (выделения цифр); во-вторых, формирование ЧП двух десятичных цифр не СВОДИТСЯ к альтернативному выбору между значением множимого и нулем, а требует специальной процедуры умножения цифр; в-третьих, формирование СЧП может быть реализовано сложением только однобайтных чисел С применением команды десятичной коррекции DAA. Указанные отличия существенно усложняют программы умножения десятичных чисел, увеличивая время их вьшолнения и затраты памяти. Поэтому десятичное умножение целесообразно использовать для сомножителей малой разрядности, а обработку чисел большой разрядности вести средствами двоичной арифметики с предварительным преобразованием десятичных чисел в двоичные.

Рассмотрим две программы умножения десятичных чисел. Программа У410 реализует точное умножение формата 4-4 = 8 двух десятичных цифр методом двоично-десятичного накопления ММ в соответствии со значением МН:

0890 ORG 890Н

У410:

;ПОДПРОГРАММА ДЕСЯТИЧНОГО УМНОЖЕНИЯ ОДНОРАЗРЯДНЫХ ЕЕЗ-гЗНАКОВЫХ ДВОИЧНО-ДЕСЯТИЧНЫХ (КОД 8421) ЧИСЕД ФОРМАТА 4. гВХОДНЫЕ ПАРАМЕТРЫ: (С)-ЦИФРА МНОЖИТ!;ЛЯ, (Е)-ЦИФРА МНОЖИ-JMOrO.ВЫХОДНОЙ ПАРАМЕТР:(А)-ДВОИЧНО-ДЕСЯТИЧНОЕ ПРОИЗВЕ-?ДЕНИЕ.СОХРАНЯЮТСЯ РЕГИСТРЫ (Е),(С).ГЛУБИНА СТЕКА-2. ;0ЦЕНКА:ДЛИНА-16 БАЙТ,ВРЕМЯ-НЕ БОЛЕЕ 267 ТАКТОВ.



0 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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116



0.0109
Яндекс.Метрика