Доставка цветов в Севастополе: 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

зуется для представления знака. При умножении этих чисел возможны четыре ситуации [20, 46, 61]:

1) Х>0, Y>0. Так как [Х>0] = Х и [К>0]д= У, то [X •У>0] ,,- Х- Y, т. е. результат умножения совпадает с произведением беззнаковых чисел;

2) А:<0, F>0. Согласно формуле (1.8), [Л:<0]а = = 2" X, и произведение, полученное методом умножения беззнаковых чисел,- псевдопроизведение - равно [А]д- [К] д= К-2" +л:-К. Правильный же результат равен [А - У < 0]д = 2" + X • F (с учетом того, что формат произведения 2 п). Очевидно, что для получения правильного результата из псевдопроизведения необходимо к последнему прибавить 2" (эту операцию практически не надо выполнять, так как данное число - граница произведения - выходит за рамки формата произведения) и вычесть Y 2", т. е. вычесть множитель, сдвинутый влево на п разрядов;

3) X > О, У<0. Эта ситуация аналогична предыдущей. Для получения правильного произведения необходимо вычесть из псевдопроизведения число • 2", т. е. вычесть множимое, сдвинутое влево на п разрядов;

4) А-<0, У<0. Так как [Х<Щ =2 + Хн {Y<0\ = = 2" +У, то псевдопроизведение равно[А] д-[] д=2~"-f + 2" • + 2" • У + X • У, а правильное произведение [ХХ X У > 0]д = X-Y. Следовательно, для получения правильного произведения из псевдопроизведения необходимо вычесть числа 2" • X и 2" • У, т. е. вычесть и множитель, и множимое, сдвинутые предварительно на п разрядов влево.

Помимо прямой коррекции произведения чисел в дополнительном коде путем вычитания поправок из псевдопроизведения, существуют методы, обеспечивающие автоматическое введение поправок при любых знаках сомножителей. В частности, известен алгоритм Бута [5, 61]. Его программная реализация для микропроцессора КР580 подробно рассматривается далее (см. п. 1.3.3).

Методы умножения двоичных чисел рассматривались выше на примере целых чисел. Все они справедливы и по отношению к дробным числам. Необходимо помнить, что дробные числа являются, как правило, числами ограниченной точности, и поэтому формат их произведения обычно не превышает формата сомножителей (в отличие от удвоенного формата произведения точных целых



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

1.3.2. ЦЕЛЫЕ БЕЗЗНАКОВЫЕ ЧИСЛА 1.3.2.1. Формат 8-8=16

Программа У8 реализует простейший способ умножения путем накопления суммы множимого:

0500

500Н

;подпрограмма умножения ЦЕЛЫХ двоичных чисел вез знака ;формата 85!М~16гГДЕ ма.

;метод умножения:накопление суммы множимого в соответ-;ствии с числовым эквивалентом множителя. ;входные параметры:; (с)-множитель г (е)-множимое.выходной гПАРАМЕТР:(h.L)-произведение.используются все регистры» жроме (в>»сохраняюгся (с) » (е).

;оценка:длина-12 ваит»время-НЕ еолее 213 тактов. ;обнуление накопителя суммы

;(А)-МНОЖИТЕЛЬ 5ЕСЛИ МНОЖИТЕЛЬ=0

0500 AF

XRA А

0501 67

MOV HjA

0502 6F

MOV LjA

0503 57

MOV D.A

;ПРОВЕРКА МНОЖИТЕЛЯ

0504 81

ADD С

0505 С8

SНАКОПЛЕНИЕ СУММЫ

0506 19

ЦИКЛ: DAD D

0507 3D

DCR A

0508 С2О605

JNZ ЦИКЛ

.050Е С9

0000

fзацикливание

Программа имеет наименьшую среди программ умножения длину (12 байт) и наиболее быстрый цикл накопления суммы (25 тактов), определяемый быстродействием трех команд цикла, но вследствие выполнения при умножении большого количества таких циклов (до 255 при максимальном значении множителя) в целом работает медленно: Г38-Ь25МН тактов. При МН < 8 время не превышает 213 тактов, и в этой области программа У8 превосходит по быстродействию все аналогичные программы умножения. Заметим, что сложение однобайтного множимого в регистре (Е) с двухбайтной суммой в регистровой паре (Н, L) осуществляется в программе командой двухбайтного сложения DAD D (СТБ



в (D) = 0), что минимизирует длительность цикла накопления.

Программа У88А реализует умножение по вычислительной схеме 1 (см. рис. 1.5, а):

0510

0510 AF

0511 67

0512 6F

0513 53 0511 5F

0515 81

0516 С8

0517 AF

0518 82

0519 С8 051А 0608

051С 79

051» OF

OSIE 4F

051F II22305

0522 19

0523 7С

0524 IF

0525 67

0526 7Г1

0527 IF

0528 6F

0529 05 052А С21С05 052D С9 0000

ORG 5I0H

У88А!

;ПОДПРОГРАММА УМНОЖЕНИЯ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ БЕЗ ЗНАКА гФОРМАТА 8*8=16.ВАРИАНТ А.

;МЕТОД УМНОЖЕНИЯ:8 ЦИКЛОВ СДВИГОВ МНОЖИТЕЛЯ И ТЕКУЩЕЙ ;СУ«МЫ ЧАСТИЧНЫХ ПР-ОИЗБЕДЕНИЙ ВПРАВО.

гВХОЛНЫЕ ПАРАМЕТРЫ:(С)-МНОЖИТЕЛЬг(Е)-МНОЖИМОЕ.ВЫХОДНОЙ ;ПАРАМЕТР:(НгЬ)-ПРОИЗВЕДЕНИЕ.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ» ;СОХРАНЯЕТСЯ (О.ДОПОЛНИТЕЛЬНАЯ ТОЧКА ВХОДА В ПОДПРО-;ГРАММУ-У88АА ((В)-МНОЖИМОЕ»(Е)=0»(С)-МНОЖИТЕЛЬ). ;ОЦЕНКА:ДЛИНА-30 БАЙТ»ВРЕМЯ-НЕ БОЛЕЕ 679 ТАКТА.

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

XRA А

МОУ Н»А

МОУ L»A ;ПЕРЕМЕЩЕНИЕ МНОЖИМОГО

МОУ В.Е ;(В)-МНОЖИМОЕ

МОУ Е»А г(Е)=0

ПРОВЕРКА СОМНОЖИТЕЛЕЙ НА о

ABB С

XRA А ABB В RZ

У88АА: МУ1

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

В»8

гЕСЛИ МНОЖИМОЕ=0 гСЧЕТЧИК ЦИКЛОВ JСДВИГ МНОЖИТЕЛЯ ВПРАВО ЦИКЛ: МОУ А»С RRC

МОУ С.А

JNC ПЕР ;ЕСЛИ РАЗР-ЯД МНОЖИТЕЛЯ =0 гСЛОЖЕНИЕ МНОЖИМОГО С ТЕКУЩЕЙ СУММОЙ ЧП

ВАВ D ;СДВИГ ТЕКУЩЕЙ СУММЫ ЧП ВПРАВО ПЕР: МОУ А»Н

МОУ Н.А МОУ A»L

МОУ L.A ;ПРОВЕРКА КОНЦА ЦИКЛА DCR В

JNZ ЦИКЛ f ЗАЦИКЛИВАНИЕ

В программе максимальная длительность цикла, вычисленная в предположении, что каждый разряд множителя равен 1, составляет 77 тактов, а время выполнения программы 7 63 -- 77 • 8 = 679 тактов. Длину про-



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.008
Яндекс.Метрика