|
Главная -> Появление первого микропроцессора 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 гМНОГОЕАИТНОЕ ДВОИЧНО-ЯЕСЯТИЧНОЕ СЛОЖЕНИЕ
Программа аналогична программе C8N, за исключением одной дополнительной команды DAA, вставленной в цикл сложения двух байтов. Ошибка переполнения при десятичном сложении фиксируется, если после сложения СТБ слагаемых и выполнения команды DAA имеет место ненулевой перенос CY= 1. Программа также применима к дробным беззнаковым числам. Реализация десятичного вычитания /V-байтных двоично-десятичных чисел сложнее их суммирования, поскольку микропроцессор КР580 не содержит команды десятичной коррекции при двоичном вычитании двоично-десятичных чисел. Поэтому вычитание необходимо выполнять путем суммирования уменьшаемого с дополнительным десятичным кодом вычитаемого, что позволяет применить команду десятичной коррекции [5, 52]: где 10 -граница числа [согласно формуле (1.8)]; (10 - I К) - дополнительный десятичный код вычитаемого. Этот код целесообразно формировать в два этапа: [К1,= 10- К =(10- 1)- К -I- 1, т. е. вначале получить 2Л-разрядное десятичное число вида 99...99, вычесть из него К (такое двоично-десятичное вычитание полностью эквивалентно обычному двоичному вычитанию, так как не приводит к переносам между тетрадами), а затем к результату добавить единицу. Десятичное вычитание реализует программа B8N10: 2-1926 0470 ORG 470H B8N10: ;ПОДПРОГРАММА ДЕСЯТИЧНОГО ВЫЧИТАНИЯ ДВУХ «ЕЛЫХ ВЕЗЗНА-;КОВЫХ ДВОИЧНО-ДЕСЯТИЧНЫХ (КОД 8421) ЧИСЕЛ ФОРМАТА(2)t4))tN гВХОДНЫЕ ПАРАМЕТРЫ:<В,С)-АДРЕС МЛЕ УМЕНЬШАЕМОГО»(HiL>-;-АДРЕС МЛЕ ВЫЧИТАЕМОГО»(Е)-КОЛИЧЕСТВО N ЕАИТ ЧИСЛА. ;ВЫХОЙНЫЕ ПАРАМЕТРЫ:(В»С)-АЙРЕС МЛЕ РАЗНОСТИ (СОВПАДАЕТ ;С АДРЕСОМ МЛБ УМЕНЬШАЕМОГО),СУ=0-ПРИЗНАК ОТРИЦАТЕЛЬНОГО ?РЕЗУЛЬTATA.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ»СОХРАНЯЮТСЯ (BtC)» S(Е>.ГЛУБИНА СТЕКА-4. ;0«ЕНКА:ДЛИНА-26 ЕАИТ,ВРЕМЯ-(78+69«N) ТАКТОВ. jПОДГОТОВКА РЕГИСТРОВ
?ПОБАЙТНОЕ ПРЕОБРАЗОВАНИЕ ВЫЧИТАЕМОГО В ДОПОЛНИТЕЛЬНЫЙ ;КОй и ДВОИЧНО-ДЕСЯТИЧНОЕ СЛОЖЕНИЕ С УМЕНЬШАЕМЫМ
Программа имеет три интересные особенности: 1) преобразование вычитаемого и дополнительный код производится побайтно и совмещается в цикле с операцией десятичного сложения С соответствующим байтом уменьшаемого; 2) для адресации уменьшаемого в процессе работы программы применяется регистровая пара (D, Е), а не (В, С), что позволяет, используя команду обмена регистровых пар XCHG, быстро адресовать в арифметических командах сложения, обращающихся к памяти, как уменьшаемое, так и вычитаемое; 3) применяется псевдослагаемое (С) = 0, которое позволяет использовать в цикле более быстродействующую команду ADC С (4 такта) вместо команды ACI О (7 тактов). 1.3. УМНОЖЕНИЕ ДВОИЧНЫХ ЧИСЕЛ 1.3.1. МЕТОДИКА УМНОЖЕНИЯ Умножение точных п-разрядных чисел дает точное 2 п-разрядное произведение. Погрешность этой операции для чисел ограниченной точности определяется следующим правилом: граничная относительная ошибка произведения приблизительно равна сумме граничных относительных ошибок представления сомножителей [15, 70]- бр(ПХ,)« S6,(X,), (1.18) где X,-- сомножители. Из формулы (1.18) следует, что результат умножения чисел ограниченной точности (будь это целые или дробные числа) не может иметь больше значащих цифр, чем их имеет наименее точный сомножитель. Очевидно, что при умножении «-разрядных чисел ограниченной точности произведение является также «-разрядным числом, причем, если значность каждого из двух сомножителей равна п, то в произведении предпоследняя цифра -[п- 1)-я для дробного и 2-я для целого числа безусловно верна, а последняя не вполне точна (сомнительна). При увеличении количества сомножителей пропорционально растет граничная относительная ошибка произведения и уменьшается его значность. Микропроцессор КР580 не содержит команд умножения чисел, и поэтому умножение требует разработки программ. Любой программный метод выполнения умно жения (за исключением громоздкого табличного метода) основан на многократном выполнении операций сложения. Очевидно, что простейший способ умножения целых беззнаковых чисел X • Y = Z есть суммирование множимого с накоплением его столько раз, сколько единиц содержит значение множителя Y. Этот способ требует при больших значениях У значительных затрат времени на выполнение многократных операций сложения, и поэтому применение его ограниченно. Сокращение количества операций сложения при реализации умножения основано на методах совместного анализа цифр множителя [32, 33, 46, 611. Эти методы дробят 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.0692 |
|