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

гМНОГОЕАИТНОЕ ДВОИЧНО-ЯЕСЯТИЧНОЕ СЛОЖЕНИЕ

0453 OA

ЦИКЛ: LDAX

0454 8Е

;СЛОЖЕНИЕ С УЧЕТОМ ПЕРЕНОСА

0455 27

;ДВОИЧНО-ДЕСЯТИЧНАЯ КОРРЕКЦИЯ

0456 02

STAX

0457 03

;УВЕЛИЧЕНИЕ АДРЕСА 1

0458 23

5УВЕЛИЧЕНИЕ АДРЕСА 2

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

0459 IB

045А С25304

ЦИКЛ

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

;КОНЕЦ СЛОЖЕНИЯ

045D CI

JВОССТАНОВЛЕНИЕ АДРЕСА 1

045Е 5А

JВОССТАНОВЛЕНИЕ СЧЕТЧИКА

045F С9

0000

Программа аналогична программе 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ПОДГОТОВКА РЕГИСТРОВ

0470

PUSH

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

0471

PUSH

гСОХРАНЕНИЕ АДРЕСА РАЗНОСТИ

0472

В»Ё

0473

В»Е

;(В)-СЧЕТЧИК ЕАИТ

0474

Е»С

;(В»Е)~АДРЕС УМЕНЬШАЕМОГО

0475

ОЕОО

С»0

;ПСЕБДОСЛАГАЕМОЕ=0

0477

;CY=i

?ПОБАЙТНОЕ ПРЕОБРАЗОВАНИЕ ВЫЧИТАЕМОГО В ДОПОЛНИТЕЛЬНЫЙ ;КОй и ДВОИЧНО-ДЕСЯТИЧНОЕ СЛОЖЕНИЕ С УМЕНЬШАЕМЫМ

047S

ЗЕ99

ЦИКЛ: МУ1

A»99H

047А

;СЛОЖЕНИЕ С УЧЕТОМ ПЕРЕНОСА

047В

гДОПОЛНЕНИЕ ВЫЧИТАЕМОГО

047С

ХСН6

047В

; СЛОЖЕНИЕ с УМЕНЬШАЕМЫМ

047Е

ХСН6

047F

;ДВОИЧНО-ДЕСЯТИЧНАЯ КОРРЕКЦИЯ

0480

STAX

0481

;УВЕЛИЧЕНИЕ АДРЕСА УМЕНЬШАЕМОГО

0482

?УВЕЛИЧЕНИЕ АДРЕСА ВЫЧИТАЕМОГО

гПРОЕЕРКА КОНЦА ЦИКЛА

0483

0484

С27804

ЦИКЛ

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

;КОНЕЦ ВЫЧИСЛЕНИЯМ

0487

; ВОССТАНОВЛЕНИЕ АДРЕСА РАЗНОСТИ

048В

;ВОССТАНОВЛЕНИЕ СЧЕТЧИКА

0489

0000

Программа имеет три интересные особенности: 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
Яндекс.Метрика