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

1863 В7

1864 С8

1865 F5

1866 F5

1867 СГР2012 186А ГРА7618

186£1 F1 186Е ЗГР i86F С26618

1872 AF

1873 С37718

1876 til

1877 IPI

1878 7A

1879 C9 0000

гПРОВЕРКА ПОКАЗАТЕЛЯ СТЕПЕНИ НА НОЛЬ • .

ORA А !ПРОЯВЛЕНИЕ ПОКАЗАТЕЛЯ

RZ гЕСЛИ П0КАЗАТЕЛЬ=0

PUSH PSU гСОХРАНЕНИЕ ПОКАЗАТЕЛЯ

г«ИКЛ УМНОЖЕНИЯ АРГУМЕНТА НА ЧАСТИЧНОЕ ПРОИЗВЕДЕНИЕ

ЦИКЛ: PUSH PSU гСОХРАНЕНИЕ СЧЕТЧИКА «ИКЛОВ

CALL УДПЗЗ г(В,С)-АДРЕС ПРОИЗВЕДЕНИЯ JC ПЕР1 гЕСЛИ ОШИБКА ПОРЯДКА

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

гВОССТАНОВЛЕНИЕ СЧЕТЧИКА ЦИКЛОВ

POP DCR JNZ XRA JMP

PSU A

ЦИКЛ A

ПЕР2

гЗАЦИКЛИВАНИЕ гС¥=0

гВОССТАНОВЛЕНИЕ РЕГИСТРОВ

nEPls ПЕР2:

POP POP MOV RET END

D г БАЛАНС СТЕКА

D гВОССТАНОВЛЕНИЕ ПОКАЗАТЕЛЯ

AtD г(А)-ПОКАЗАТЕЛЬ СТЕПЕНИ гСУ=1.ЕСЛИ ОШИБКА

-/ 0


Рис. 4.3. Графики степенной функции

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

Число операций умножения при вычислении степенной функции можно уменьшить, если разложить показатель я на множители, кратные двум [1, 48]. Так, для « = = 2k или n = 2k имеем соответственно х" = {xf или х" = {xY • X, т. е. для вычисления х" требуется не более k или {k -{- 1) операций умножения. Аналогичный подход



можно применить для вычисления и т. д. Например, вычисление х=[{х xff требует всего трех операций умножения вместо семи. В общем случае целочисленный показатель п можно представить в виде двоичного полинома по схеме Горнера: и = (...((О + а;б ,) • 2 + + аА 2)-2+ ai)-2 + 00. Тогда метод экономичного вычисления х" определяется выражением

х"(...Цх° х"-у . х-у .... х") • х", (4.8)

где х° = х, если а,- = 1, и х°- 1, если щ = О, г = О, 1,2, k- 1. Вычисление выражения (4.8) начинается с анализа старших двоичных разрядов показателя п. Если ak- \ = 1, вычисляется частичная степень {х° • xf = х; если следующая цифра ak-2 - 1, полученная степень умножается на аргумент и возводится в квадрат: {х-х) -х; если же о;д, 2 = 0, сразу следует возведение в квадрат: (x) = х и т. д. Например, вычисление xJ в соответствии с методом (4.8) имеет вид (7io= 11 Ь):((л;) • л;) • =Применение метода (4.8) требует не более [log2n] операций возведения в квадрат и не более такого же количества операций умножения на х.

Программа СТЕПА вычисляет степенную функцию по методу (4.8):

1890 ORG 1890Н

1220 УДПЗЗ SET 1220Н

0180 ЕДПЗ SET 180Н

СТЕПА:

;««*»»«»х««х»»»)(»к»хх«»»«х«»»)(»»»»»»»*«»»««»хк«»х«»)(»»)(« гПОДПГОГГАММА ВЫЧИСЛЕНИЯ СТЕПЕНИ У(У)=ХххЫ (N ( 256). гВХОДНЫЕ ПАРАМЕТРЫ:(HtL)-АДРЕС АРГУМЕНТА Х.ПРЕДСТАВЛЕН-;НОГО В ФОРМАТЕ 3-БАЙТНОГО ДВОИЧНОГО *СЛА В ДОПОЛНИ-

гтЕльном КОДЕ С плавающей запятой.(А)-показатель степени

;В ФОРМАТЕ «ЕЛОЧИСЛЕННОГО ДВОИЧНОГО БЕЗЗНАКОВОГО ЧИСЛА. ?(В.С)-АДРЕС СТЕПЕНИ.выходной ПАРАМЕТР!СУ=1-ПРИЗИАК ПЕ-гРЕПОЛНЕНИЯ ИЛИ АНТИПЕРЕПОЛНЕНИЯ ПОРЯДКА СТЕПЕНИ.ИСПОЛЬ-, гЗУЮТСЯ ВСЕ РЕГИСТРЫ.СОХРАНЯЮТСЯ (H.L.). (В.С) . (А) .ГЛУБИНА

;СТЕКА-24.ИСПОЛЬЗУЮТСЯ ПОДПРОГРАММЫ!хУДПЗЗх,хКОМЗх,хОБНЗ ? ХУДФ17х г ХНМАН2Х,ХДОПВХ.хДОПДх,хузЗБх,хУ24Ах,хЕДПЗх. ;0«ЕНКА:ДЛИНА-48 БАЙТ (+241 БАЙТ ПОДПРОГРАММ).ВРЕМЯ-НЕ ;Б0ЛЕЕ (142+4285x8) ТАКТОВ (С УЧЕ\т ПОДПРОГРАММ). ;ххххххххххххххххххххххххххххххххххххххххххххххххххххххх гЗАНЕСЕНИЕ "1" В ФОРМЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ В РЕЗУЛЬТАТ 1890 СВ8001 CALL. ЕДПЗ

гПРОВЕРКА ПОКАЗАТЕЛЯ СТЕПЕНИ НА НОЛЬ

1893 В7 ORA А J ПРОЯВЛЕНИЕ ПОКАЗАТЕЛЯ

1894 С8 RZ гЕСЛИ П0КАЗАТЕЛЬ=0

1895 FS PUSH PSW гСОХРАНЕНИЕ ПОКАЗАТЕЛЯ

1.87



1S96 ie:os

г(E)-СЧЕТЧИК ЦИКЛОВ

ВОЗВЕДЕНИЯ В КВАДРАТ ЧАСТИЧНОГО ПРОИЗВЕДЕНИЯ

1898 Ю

ЦИКЛг

PUSH

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

1899 F5

PUSH

гСОХРАНЕНИЕ ПОКАЗАТЕЛЯ

189A E5

PUSH

гСОХРАНЕНИЕ АДРЕСА АРГУМЕНТА

189В 60

189С 69

l.,C

г(Н.Е)-АДРЕС ПРОИЗВЕДЕНИЯ

189В CD2012

CALL

УДПЗЗ

18А0 DABA18

ПЕР1

гЕСЛИ ОШИБКА ПОРЯДКА

18АЗ El

гВОССТАНОВЛЕНИЕ АДРЕСА АРГУМЕНТА

SАНАЛИЗ ОЧЕРЕДНОГО СТАРШЕГО РАЗРЯДА ПОКАЗАТЕЛЯ СТЕПЕЖ

18А4 Fl

гВОССТАНОВЛЕНИЕ ПОКАЗАТЕЛЯ

18А5 07

18А6 В2В118

ПЕР2

гЕСЛИ РАЗРЯД=0

18А9 F5

PUSH

гСОХРАНЕНИЕ ПОКАЗАТЕЛЯ

!УМНОЖЕНИЕ ЧАСТИЧНОГО ПРОИЗВЕДЕНИЯ НА АРГУМЕНТ

18АА CD2012

CALL

УДПЗЗ

18АВ ВАВВ18

ПЕРЗ

гЕСЛИ ОШИБКА ПОРЯДКА

18В0 Fl

гВОССТАНОВЛЕНИЕ ПОКАЗАТЕЛЯ

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

18B1 Bl

ПЕР2:

гВЗССТАН0ВЛЕН!«: СЧЕТЧИКА ЦИКЛА

18B2 IB

18B3 C29818

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

18Б6 AF

гСУ=0

18B7 C3BD18

ПЕР4

гВОССТАНОВЛЕНИЕ РЕГИСТРОВ

18BA El

ПЕР1S

гБАЛАНС СТЕКА

18БВ Bl

ПЕРЗ:

гБАЛАНС СТЕКА

18BC Bl

-БАЛАНС СТЕКА

18BB Bl

ПЕР4:

гВОССТАНОВЛЕНИЕ ПОКАЗАТЕЛЯ

18БЕ 7A

г(А)-ПОКАЗАТЕЛЬ СТЕПЕНИ

18BF C9

гСУ=1»ЕСЛИ ОШИБКА

0000

Программа выполняет анализ очередной двоичной цифры показателя степени путем сдвига его влево. При этом значение цифры совпадает с признаком переноса: CY =ai. Сопоставляя программы СТЕП и СТЕПА, можно увидеть, что последняя требует несколько больших затрат памяти, но зато при больших п(п>16) она вычисляет степенную функцию быстрее, чем программа СТЕП. Заметим, что в обеих программах расчет времени их работы дан для наихудшего случая, когда все двоичные цифры показателя степени равны единице. Тестовые данные для обеих программ приведены в табл. 4.2.

Табл. 4.2. Тестовые данные у =J("

у=х"

/4,0

/4,0

1 2

2"=0,1024-10 2"=0,1100-10з

4В8000 698000

0,1 «0,1 ООО-10-" 0,1=«0,1000-10-

1FDBE0 0F9014



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