|
Главная -> Появление первого микропроцессора 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 05П0 210000 lxi HrO гОБНУЛЕНИЕ СУММЫ ЧП 05Са 010800 lxi В»08 ;(В)=0»<С)-СЧЕТЧИК ЦИКЛОВ ;СДВИГ ТЕКУЩЕЙ СУММЫ ЧП И МНОЖИТЕЛЯ ВЛЕВО 05П6 29 ЦИКЛ5 ВАВ Н 05П7 8F АПС А 05D8 П2ВВ05 JNC ПЕР ;ЕСЛИ РАЗРЯД МНОЖИТЕЛЯ=0 fСЛОЖЕНИЕ МНОЖИМОГО С ТЕКУЩЕЙ СУММОЙ ЧП 05ПВ 19 BAD В 05ПС 88 АПС В SПРОВЕРКА КОНЦА ЦИКЛА 05ПП 0D ПЕР! DCR С 05ГС C2D605 JNZ ЦИКЛ УЗАЦИКЛИВАНИЕ 05Е1 С9 RET 0000 END Максимальная длительность цикла умножения равна 53 тактам, а время выполнения программы Г30---1-53-8 = 454 тактам. Сокращение времени цикла по сравнению с программой У24 достигнуто за счет использования более быстродействующей- команды ADC В вместо ACI 0. Иногда при умножении целых чисел возникает необходимость получения произведения в сокращенном формате, не превышающем формат одного из сомножителей. Обычно такое произведение формируют из полноформатного путем его округления. Программа У168 реализует сокращенный формат умножения путем симметричного округления произведения формата 16-8 = 24, вычисляемого предварительно подпрограммой У24: 05f0 org 5f0h 05Е0 у24 set 5Б0Н у168: !подпрограмма умножения ЦЕЛЫХ двоичных ЧИСЕЛ без знака ;формата 16*8=16 С округлением. ;входные параметры:(С)-множитель.(d.e)-множимое.быход-;ной параметр:(НгЕ)-произбедение.используются все реги-;СТРЫгсохраняются (С)»(В»Е). используется подпрограмма ;»у24*. ;0ценка:длина-11 (+25»у24») БАЙТгВРЕМЯ-не еолее 571 sтактов (С учетом »у24*). ;выполнение умножения 16*8=24 05f0 cdb005 call у24 J(а.HjL)-произведение гОКРУГЛЕНИЕ результата 05f3 45 mov BrL ;(в)-млб 05f4 6с mov L>h S(L)-cpe 05f5 67 mov НгА ;(Н)-стб 05f6 78 mov А.в ;(А)-МЛЕ 05f7 17 ral 05f8 ВО . rnc ;если стр баита=0 05F9 23 05FA С9 0000 INX RET END J(CTE»CP15)+1 В результате округления точного произведения формируется произведение ограниченной точности, погрешность которого определяется формулами (1.10) и (1.12). Заметим, что модуль полученного произведения содержит неявный множитель 256, так как сокращенный формат представляет только СТБ и СРБ полного произведения (МЛБ отбрасывается). Тестовые наборы данных для программ У24 и У24А приведены в табл. 1.6. Табл. 1.6. Тесты умножения формата 8-16=24 (целые двоичные беззнаковые числа) Представление чисел шестнадцатеричное" десятич! ое FF-FFFF=FEFF01 01 - FFFF = OOFFFF OF- FOOO = OE1000 FF- FE0O=FEO10O AA-5555=38AA72 7F-07FF=03F781 255-65535= 16711425 01 -65535 = 65535 15-64440= 966600 255-65280= 16646400 170-21845 = 31713650 127-2047 = 259969 1.3.2.3. Формат 16- 16=32 Программа У32А, подобно программам У88Б, У24, реализует умножение по вычислительной схеме 3 (аналогичная программа приведена в работе [71]): 0600 0600 AF 0601 67 0602 6F 0603 В2 ORG 600Н У32А: гПОЙПРОГРАММА УМНОЖЕНИЯ ЦЕЛЫХ двоичных ЧИСЕЛ ВЕЗ ЗНАКА ;формата 16*16=32.вариант а. гМЕТОД УМН0ЖЕНИЯг16 ЦИКЛОВ сдвигов МНОЖИТЕЛЯ и СУММЫ ;ЧАСТИЧНЫХ ПРОИЗВЕДЕНИЙ ВЛЕВО. гВХОДНЫЕ ПАРАМЕТРЫ!(В,С)-МНОЖИМОЕг(В»Е)-МНОЖИТЕЛЬ.ВЫ-?ХОДНЫЕ ПАРАМЕТРЫ:(В»Е»Н»Е)-ПР0ИЗВЕДЕНИЕ.ИСП0ЛЬЗУЮТСЯ ;ВСЕ РЕГИСТРЫ.СОХРАНЯЕТСЯ (Б.С). ;0ЦЕНКА!ЙЛИНА-40 ВАЙТ.ВРЕМЯ-НЕ БОЛЕЕ 1711 ТАКТОВ. ;ОБНУЛЕНИЕ ТЕКУЩЕЙ СУММЫ ЧП XRA А MOV Н.А MOV L.A ? ПРОВЕРКА СОМНОЖИТЕЛЕЙ НА О " ORA В -.- - •
Увеличение разрядности сомножителей и произведения ведет к росту количества используемых регистров и усложнению типа передач данных между ними, что в результате увеличивает длину программы, длительность ее цикла и общее время ее выполнения. Максимальная длительность цикла умножения в программе У32А равна 103 тактам, а время ее вьшолнения Г 63 + ЮЗ 16 = = 1711 тактам. Программа имеет три особенности: 1) для сдвига МН временно используется та же регистровая пара (Н, L), что и для накопления СЧП; 2) для сохранения переноса от сдвига множителя (с целью последующего его анализа) используется старший бит аккумулятора; 3) счетчик конца цикла построен не по принципу уменьшения переменной цикла до нуля, как в предыдущих программах, а, наоборот, по принципу увеличения переменной цикла ОТ нуля до переполнения счетчика (аккумулятора) Программа У32А выполняет процесс умножения как 16-кратное повторение цикла умножения множимого на очередной разряд множителя. Благодаря этому обеспе- 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.0108 |
|