Главная -> Появление первого микропроцессора
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
1310 Е5 1311 С5 1312 ЕВ 1313 СВ9000 1316 ЕВ 1317 С22313 131А 21ВА13 131С ССАЗОО 1320 С1 1321 Е1 1322 С9 У1Ш31, ;««*«««к«х«»«»»««««к»«*-»«««-»»»«»»»««»»к»»»«»к»»»«»»»»»»» гпойпгогрйммА УМНОЖЕНИЯ ЦЕЛОГО бе:ззнакового двоичного ;ЧИСЛА ФОРМАТА В«М НА 3-ЕАИТНОЕ ДВОИЧНОЕ ЧИСЛО С ПЛА-jBAWUIEH запятой в ДОПОЛНИТЕЛЬНОМ КОДЕ ФОРМАТА <8т16) = ;<ПОР.МЛН).ГДЕ ЕАИТ ПОРЯДКА СОДЕРЖИТ ЕИТ ЗНАКА МАНТИССЫ ;И ЦЕЛОЧИСЛЕННЫЙ ДВОИЧНЫЙ ПОРЯДОК СО СМЕЩЕНИЕМ +40Н.А 2 ;ЕАИТА МАНТИССЫ-СТЕ, МЛЕ-йРОЕНОЕ: НОРМАЛИЗОВАННОЕ ЧИСЛО. ;входные ПАРАМЕТРЫ: <С,Е)-АДРЕС СОЖОЖИТЕЛЯ СМ1 С ПЛАВА-•,тт ЗАПЯТОЙ, <H»L)-адрес ЦЕЛОЧИСЛЕННОГО СОМНОЖИТЕЛЯ» (С) гКОЛИЧЕСТВО М ЕАИТ ЦЕЛОГО ЧИСЛА.ВЫХОДНЫЕ ПАРАМЕТРЫ5пр0из-;ВЕДЕНИР>3-ваитн0е ЧИСЛО С ПЛАВАЮЩЕЙ ЗАПЯТОЙ В ОЕЛАСТИ ;ПАМЯТИ "ЕУФЕРЧСУ-ПРИЗНАК ПЕРЕПОЛНЕНИЯ ПОРЯДКА ПРОИЗВЕ-;ДЕНИЯ.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ»СОХРАНЯЮТСЯ <BfЕ)»(HrL) ;ГЛУЕ№1А СТЕКА-В.ИСПОЛЬЗУЮТСЯ ПОДПРОГРАММЫ:*к0мз*»*ОЕНЗ* ;*ДОПД* т «ДОПВ» т*ПОСН«. ;0ценка:ДЛИНА-171 ЕАИТ (+41 ЕАИТ ПОДПРОГРАММ) fВРЕМЯ -НЕ jЕОЛЕЕ (712+1443*N) ТАКТОВ (С УЧЕТОМ ПОДПРОГРАММ) PUSH H f СОХРАНЕНИЕ АДРЕСА CM2 PUSH в гСОХРАНЕНИЕ АДРЕСА CM! гПРОВЕРКА СОМНОЖИТЕЛЯ СМ1 НА НОЛЬ XCHG CALL КОМЗ г2-=1»ЕСЛИ СМ1=0 XCHG JMZ пер1 гЕСЛИ СМ1 НЕ О гОЕНУЛЕНИЕ ПРОИЗВЕДЕНИЯ ПЕР2: LXI Н..ВУФЕР г(Н.Е)-АДРЕС ПРОИЗВЕДЕНИЯ CALL ОЕНЗ POP С гВОССТАНОВЛЕНИЕ АДРЕСА СМ1 POP Н ;ВОССТАНОВЛЕНИЕ АДРЕСА СМ2 RET гЕСЛИ CM=0»(CY=0) гПРОВЕРКА СОМТОЖИТЕЛЯ СМ2 НА НОЛЬтОПРЕДЕЛЕНИЕ НОМЕРА Ш гСТАРШЕГО НЕНУЛЕВОГО ЕАИТА СМ2 1323 АР | ПЕР1! XRA | | | 1324 В1 | | | | 1325 СА1А13 | | ПЕР2 | гЕСЛИ N=0 | 1328 Е5 | PUSH | | гСОХРАНЕНИЕ АДРЕСА СМ2 | 1329 0600 | | | | 132Б 09 | | | | 132С 2В | | | г(HrL)-АДРЕС СТЕ СМ2 | 132В АГ | | | г(А)=о | 132Е В6 | ЦИКЛ1: ORA | | гПРОВЕРКА БАЙТА НА 0 | 132F С23В13 | | ПЕРЗ | гЕСЛИ БАЙТ НЕ 0 | 1332 2В | | | | 1333 ОС | | | гУМЕНЫЛЕНИЕ N*=N-1 | 1334 С22Е13 | | ЦИКЛ1 | ; ЗАЦИКЛИВАНИЕ 1 | 1337 Е1 | | | гБАЛАНС СТЕКА | 1338 С31А13 | | ПЕР2 | гсм2=о | 133В Е1 | пе:рз; pop | | гВОССТАНОБЛЕНИЕ АДРЕСА СМ2 | | гсомножитЕЛИ | HE 0.ЗАГРУЗКА МАНТИССЫ CM! Б РЕГИСТР!,! | 133С С5 | PUSH | | SCOXPAfCHHE N* | 133С ЕВ | XCHG | | г(HrL)-АДРЕС СМ1 | 133Е 7Е | | | | 133F Ej580 | | | гВЫДЕЛЕНИЕ ЗНАКА СМ1 | 1341 23 | | | | 1342 46 | | | | 1343 23 | | | | 1344 4Е | | | |
1345 ев | xchg | | ((h.l)-адрес см2 | 134й 50 | | | | 1347 59 | | | ((В.е)-мантисса | 1348 fc5800 | | допд | (дополнение.если знак "-" | 134в С1 | | | (восстановление n« | | (подготовка | регистров к циклу умножения | 134с е5 | push | | (сохранение адреса еМ2 | 134в 21ва13 | | н.еуфер | | 1350 3608 | | | ((буфер)=8-счет сдвигов цикла , | 1352 23 | | | | 1353 AF | | | | 1354 77 | | | ((буфер+1)=0-0бщии СЧЕТ сдвигов | 1355 67 | | | | 1356 6f | | | ((н.е)=0-сумма чп | 1357 ез | xthl | | ((H.l)-текущий адрес см2 | | (цикл ужожения HA текущий ЕАИТ целого числа | 1358 46 | цикл2! mov | | ((б)-байт множителя | 1359 ез | xthl | | ((H.L)-текущая сумма ЧП | | (сдвиг множителя вправо | 135А Af- | никлз: XRA | | (eY=o | 135в 78 | | | | 135с IF | | | | 135» 47 | | | | 135е в26513 | | пер4 | (если разряд множителя=0 | | (сложение мантиссы-множимого С суммой чп | 1361 19 | | | | 1362 da6e13 | | пер5 | (если переполнение суммы | | (проверка гПОСЛЕДНИ! ненулевой ЕАИТ множителя ? | 1365 79 | пер4: mov | | | 1366 3d | | | | 1367 с26е13 | | пер5 | (если n*)l | 136А 80 | | | ((а)-остаток множителя при n*=l | 13йВ са9013 | | ПЕРб | (если оетАток=о | | (сдвиг суммы | чп вправо.проверка конца цикла 3 | 136е св7800 | пер5: call | поен | (сдвиг вправо (H.l) | 1371 заба13 | | буфер | ((А)-счет сдвигов цикла | 1374 3D | | | | 1375 32ва13 | | буфер | (запоминание счетчика | 1378 с25а13 | | циклз | (зацикливание 3 | | (подготовка | счетчиков к продолжению цикла 2 | 137в е5 | push | | | 137с 21ва13 | | н.еуфер | | 137f 3608 | | | ((буфер)=8 | 1381 23 | | | | 1382 7е | | | | 1383 с608 | | | (увеличение общей суммы сдвигов | 1385 77 | | | | 1386 е1 | | | | | (проверка конца цикла умножения | 1387 ов | | | (уменьшение n* | 1388 са9013 | | ПЕРб | (если n*=0 | 138в ез | xthl | | ((H.L)-текущий адрес ем2 | 138с 23 | | | ((H.L)-адрес следующего ЕАИТА | 138в с35813 | | цикл2 | (зацикливание 2 | | (окончание цикла умножения | 1390 е5 | ПЕРб! push | | (сохранение произведения | 1391 21ва13 | | н.буфер | 1394 зе08 | | | | 1396 96 | | | ((а)-последнее число сдвигов |
1397 23 | | | | 1398 86 | | | г(А)-СУММАРНОЕ ЧИСЛО СДВИГОВ | 1399 28 | | | | 139А 77 | | М»А | г(БУФЕР)-СУММАРНОЕ ЧИСЛО СДВИГИ | гДОПОЛНЕНИЕ ОТРИЦАТЕЛЬНОГО ПРОИЗВЕДЕНИЯ | 139В С1 | | | г(В.С)-ПР0ИЗВЕДЕНИЕ | 139С В1 | | | гБАЛАНС СТЕКА | 139В В1 | | | гВОССТАНОБЛЕНИЕ АДРЕСА СМ1 | 1391: 1А | LBAX | | 5 (А)-ЕАИТ ПОРЯДКА СМ1 | 139F В5 | PUSH | | гСОХРАНЕНИЕ АДРЕСА СМ1 | 13А0 5F | | Е»А | г(Е)-БАЙТ ПОРЯДКА СМ1 | 13А1 Е680 | | | гВЫДЕЛЕНИЕЗНАКА СМ1 | 13АЗ 57 | | | гСОХРАНЕНИЕ ЗНАКА В (D) | 13М FC5000 | | ДОПВ | гДОПОЛНЕНИЕ ПРОИЗВЕДЕНИЯfЕСЛИ "• | 13А7 7В | | | г(А)-БАЙТ ПОРЯДКА СМ1 | 13А8 E67F | | | гИСКЛИЧЕНИЕ ЗНАКА СМ1 | 13АА 86 | | | гКОРРЕКЦИЯ ПОРЯДКА ПРОИЗВЕДЕНИЯ | 13АВ F5 | PUSH | | гСОХРАНЕНИЕ ПРИЗНАКОВ | 13АС В2 | | | г ВСТАВКА ЗНАКА ПРОИЗВЕДЕНИЯ | | гЭАПИСЬ ПРОИЗВЕДЕНИЯ В | БУФЕР | 13АВ 77 | | | гЗАПИСЬ ПОРЯДКА ПРОИЗВЕДЕНИЯ | 13АЕ 23 | | | | 13AF 70 | | | гЗАПИСЬ СТЕ ПРОИЗВЕДЕНИЯ | 13В0 23 | | | | 13В1 71 | | | гЗАПИСЬ МЛЕ ПРОИЗВЕДЕНИЯ | 13В2 F1 | | | гВОССТАНОБЛЕНИЕ ПРИЗНАКОВ | 13ВЗ В1 | | | гВОССТАНОБЛЕНИЕ АДРЕСА СМ1 | 13В4 Е1 | | | гВиССТАНОВЛЕНИЕ АДРЕСА СМ2 | 13В5 В8 | | | гЕСЛИ ПЕРЕПОЛНЕНИЕ П0РЯДКАтСУ=1 | 13В6 37 | | | гсу=1 | 13В7 F8 | | | гЕСЛИ ПЕРЕПОЛНЕНИЕ ПОРЯДКА | 13В8 AF | | | гСУ=о | 13В9 С9 | | | гПЕРЕПОЛНЕНИЯ НЕТ | | гОБЛАСТЬ ХРАНЕНИЯ РЕЗУЛЬТАТА | 13ВА | БУФЕР: BS | | гЗ ЕАИТА | 0000 | | | |
Результат размещается в области памяти БУФЕР. Программа обращается к ряду вспомогательных программ, рассмотренных ранее. Умножение непосредственно выполняется лишь после проверки обоих сомножителей на нуль, причем проверка Л-байтного сомножителя осуществляется, начиная с его старших байтов. Тем самым в дальнейшем исключаются из процесса умножения старшие незначащие (нулевые) байты числа. Мантисса сомножителя с плавающей запятой загружается из памяти в регистры микропроцессора, преобразуется из дополнительного кода в прямой, и далее выполняются вложенные циклы умножения: внутренний ЦИКЛЗ и внешний ЦИКЛ2. Умножение текущего байта целого сомножителя на положительный сомножитель с плаваю-
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.0073
|