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

граммы и ее время можно уменьшить (на 5 байт и 22 такта), если исключить операции проверки сомножителей на нуль (эти операции сокращают среднее время выполнения программы, когда в потоке обрабатываемых данных часто встречаются нулевые сомножители). Заметим, что сложение множимого (Р) с двухбайтной суммой в регистровой паре (Н, L), как и в предыдущей программе, осуществляется командой DAD D, но при этом в отличие от предыдущей ситуации может возникать переполнение СЧП. Это переполнение автоматически устраняется при сдвиге СЧП вправо. Микропроцессор КР580 не имеет команд сдвига вправо двухбайтных данных, поэтому операция такого сдвига выполняется побайтно с использованием аккумулятора.

Программа У88А представляет собой вариант «бесхитростного» программирования схемы 1, при котором МН и СЧП размещаются, согласно-схеме, в структурно раздельных элементах: МН - в регистре (С), а СЧП - в регистровой паре (Н, L). Более детальный анализ схемы 1 показывает, что операции сдвига вправо МН и СЧП можно совместить, если размещать выдвигаемые младшие разряды СЧП в освобождающиеся старшие разряды МН [33]. Эту «хитрость» реализует программа У88А1 (аналогичная программа приведена в работе [20]):

0530 0R6 530H

У88А1!

гПОДПРОГРАММА УМНОЖЕНИЯ ИЕДЫХ ДВОИЧНЫХ ЧИСЕД БЕЗ ЗНАКА :Ф0РМАТА 8*8=16.ВАРИАНТ А1 (УЛУЧШЕНИЕ ВАРИАНТА А). ;ВХОДНЫЕ ПАРАМЕТРЫ:(С)-МНОЖИТЕЛЬ•(Е)-МНОЖИМОЕ.ВЫХОДНОЙ ;ПАРАМЕТР!(В1С)-ПР0ИЗВЕДЕНИЕ.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТР*!» ;КРОМЕ (H»L).СОХРАНЯЕТСЯ (Е).

!0«ЕНКАгДЛИНА-19 ВАЙТ.ВРЕМЯ-НЕ БОЛЕЕ 541 ТАКТА

0530 AF XRA А

0531 47 МОУ В.А ;ОВНУЛЕНИЕ СТБ СУММЫ ЧП

0532 1609 WI Iii9 гСЧЕТЧИК ЦИКЛОВ :

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

0534 79 НИКЛ; МОУ AfC :

0535 IF RAR • •

0536 4F МОУ С»А

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

0537 15 BCR В

0538 С8 RZ ;КОНЕЦ»ЕСЛИ (В)=0

0539 78 МОУ А. Б ; (А)-СТБ СУММЫ ЧП

053А В23Е05 JNC ПЕР ;ЕСЛИ РАЗРЯД МНОЖИТЕЛЯ=0

; СЛОЖЕНИЕ МНОЖИМОГО С ТЕКУЩЕЙ СУММОЙ ЧП 053» 83 ABB Е



!сдвиг ТЕКУИга суммы ЧП ВПРАВО 053Е IF ПЕР: RAR

053F 47 мои В>А ;(В)-СТЕ СУММЫ ЧП

0540 C33405 JMP ЦИКЛ !ЗАЦИКЛИВАНИЕ

0000 ENB

В программе У88А1 множитель размещен в регистре (С), СТБ СЧП - в регистре (В), а МЛБ СЧП в процессе работы программы размещается в освобождающихся разрядах регистра (С). Поскольку после 8 сдвигов МН вправо необходимо в соответствии с алгоритмом (1.20) произвести последний, 9-й сдвиг вправо СЧП, счетчик цикла перед началом программы устанавливается в регистре (D) = 9. Последний, 9-й неполный цикл используется только для сдвига вправо МЛБ СЧП в регистр (С) (9-й сдвиг СТБ СЧП происходит в конце полного 8-го цикла). Максимальная длительность полного цикла равна 62 тактам, а время программы 745 + 62-8 = = 541 такту. Программа У88А1 экономичнее программы У88А по длине на 24 %, а по затратам времени на 17 % (при условии, что в программе У88А исключены операции проверки сомножителей на нуль, отсутствующие в программе У88А1).

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

0550 0R6 550H

у 88В:

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

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

;ВХОДНЫЕ ПАРАМЕТРЫ:(С)-МНОЖИТЕЛЬi(Е)-МНОЖИМОЕ.ВЫХОДНОЙ ;ПАРАМЕТР:(Н»Е)-ПР0ИЗБЕДЕНИЕ.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ. ;СОХРАНЯЮТСЯ (С)»(Е).

50ЦЕНКА:ДЛИНА-22 БАЙТА»ВРЕМЯ-НЕ БОЛЕЕ 423 ТАКТОВ.

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

0550 AF XRA А

0551 67 МОУ Н,А

0552 6F МОУ L,A

0553 57 МОУ ВтА ;(В)=0

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

0554 81 ADB С

0555 С8 RZ !ЕСЛИ МНОЖИТЕЛЬ=0

0556 AF XRA А

0557 83 ABB Е

0558 С8 RZ ;ЕСЛИ МНОКИМОЕ=0

0559 61 МОУ Н»С ;(Н)-МНОЖИТЕЛЬ



055А 0608 МУ1 В»8 !СЧЕТЧИК ИИКЛОБ

гСДБИГ МНОЖИТЕЛЯ И ТЕКУЩЕЙ СУММЫ ЧП ВЛЕВО

055С 29 ЦИКЛ: BAD Н

055D D26105 JNC ПЕР

; СЛОЖЕНИЕ МНОЖИМОГО С

0560 19 DAD D

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

0561 05 ПЕР: DCR Б

0562 С25С05 JNZ ЦИКЛ 0565 С9 RET 0000 END

?ЕСЛИ РАЗРЯД МНОЖИТЕЛЯО ТЕКУЩЕЙ СУММОЙ ЧП

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

Программа У88Б использует тот же прием совмещения сдвигов МН и СЧП, который применен в программе У88А1. При этом МН размещается в регистре (Н), а СЧП накапливается в регистровой паре (Н, L). Максимальная длительность цикла в программе равна 45 тактам, а ее время Г 63 + 45 - 8 = 423 тактам. В программе использованы сдвиг влево МН и СЧП посредством команды двухбайтного сложения DAD Н и сложение однобайтного множимого регистра (Е) с двухбайтной СЧП в регистровой паре (Н, L) посредством аналогичной команды DAD D. В последующих программах более высокого уровня широко используется упрощенный вариант программы У88Б (без проверки сомножителей на нуль) -программа У88Б1:

0570

0570 67

0571 1600 0573 2Е00 0575 0608

0577 29

0578 D27C05

057В 19

057С 05 057II С27705 0580 CV 0000

ORG 570Н

У88В1:

;ПОДПРОГРАММА УМНОЖЕНИЯ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ ВЕЗ ЗНАКА ;ФОРМАТА 8*8=16.ВАРИАНТ Е1 (ВЕЗ ПРОВЕРКИ СОМНОЖИТЕЛЕЙ fHA НОЛЬ).

;ВХОДНЫЕ ПАРАМЕТРЫ:(А)-МНОЖИТЕЛЬ f(Е)-МНОЖИМОЕ.ВЫХОДНОЙ гПАРАМЕТР: (Н,Е>-ПР0И,ЗВЕДЕНИЕ.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ» JKPOME (С)»СОХРАНЯЮТСЯ (А)г(Е).

;0ЦЕНКА:ДЛИНА-17 ВАЙТ»ВРЕМЯ - НЕ ЕОЛЕЕ 396 ТАКТОВ

МОУ Н»А !(н)-МНОЖИТЕЛЬ

;ОБНУЛЕНИЕ РЕГИСТРОВ (D),(L) МУ1 И» О МУ1 LtO

МУ1 Б»8 ;СЧЕТЧИК ЦИКЛОВ ;СДБИГ МНОЖИТЕЛЯ И ТЕКУЩЕЙ СУММЫ ЧП ВЛЕВО ЦИКЛ: DAD Н

JNC ПЕР !ЕСЛИ РАЗРЯД МНОЖИТЕЛЯ=0

;С,ЧОЖЕНИЕ МНОЖИМОГО С ТЕКУЩЕЙ СУММОЙ ЧП

DAD D ;ПРОВЕРКА КОНЦА ЦИКЛА ПЕР: ICR В

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



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