|
Главная -> Появление первого микропроцессора 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
Программа ДМАН2 сохраняет последние сдвинутые разряды мантиссы с целью их использования при округлении суммы. После сложения мантисс выполняется анализ суммы на переполнение, и знак суммы заносится в cTapujHft разряд байта порядка. При сложении отрицательных мантисс вида 8000Н происходит то единственное переполнение, которое не фиксируется в модифицированном коде, но которое необходимо выявлять и устранять. Признаком такого переполнения является отрицательная сумма с нулевой мантиссой. Устранение переполнения производит программа ПМАН2: 10F1 10F1 7В 10F2 IF 10f3 47 10F4 79 10F5 IF ORG lOFlH ПМАН2: гПОДПРОГРАММА УСТРАНЕНИЯ ПЕРЕПОЛНЕНИЯ ЙВУХЕАИТНОИ МАН- ,-тиссы ЧИСЛА С плававшей запятой. рвходнне ПАРАМЕТРЫ:<ВгС>-МАНТИССАг(D)-ДОПОЛНИТЕЛЬНЫЕ ?МЛАД111ИЕ РАЗРЯДЫ МАНТИССЫ г CY-ЕИ Г ПЕРЕПОЛНЕНИЯг (HrL)-АД-SPEC ПОРЯДКА.ВЫХОДНЫЕ HAPAMETPhl: (ВгС)-НОРМАЛИЗОВАННАЯ ;МАНТИССА. (HrL)-АДРЕС ПОРЯДКА г CY=1-ПРИЗНАК ПЕРЕПОЖЕНИЯ JПОРЯДКА.ИСПОЛЬЗУЮТСЯ РЕГИСТРЫ (В.С)г(D)г (А). ;0ЦЕНКА:ЙЛИНА-18 ЕАИТгВРЕМЯ-НЕ БОЛЕЕ 93 ТАКТОВ. ;СДВИГ ВПРАВО МАНТИССЫ В (ВгСгВ) С УЧЕТОМ ПЕРЕПОЛНЕНИЯ MOV RAR MOV HOV RAR BrA ArC
Программа ПМАН2 контролирует верхнюю границу порядка и в случае опасности переполнения порядка устанавливает признак переноса CY= 1, который используется для аварийного анализа в основной программе. Если в результате сложения не было переполнения мантиссы суммы, она проверяется на условие нормализации и, если необходимо, нормализуется подпрограммой НМАН2: 10DO ЮВО 78 1081 В1 1082 С2В710 10D5 77 10В6 С9 101)7 78 10В8 АЕ ЮВ9 F8 10DA 78 ЮВВ E67F ORG ЮВОН «ман25 гПОДПРОГРАММА НОРМАЛИЗАЦИИ ДВУХБАЙТНОЙ МАНТИССЫ ЧИСЛА ;С плавающей ЗАПЯТОЙ. гВХОДНЫЕ ПАРАМЕТРЫ:(В,С)-НОРМАЛИЗУЕМАЯ МАНТИССА»(В>-гМЛАДШИЕ РАЗРЯДН ДЕНОРМАЛИЗОВАННОИ МАНТИССЫ» (H»L.)-АДРЕС ;ПОРЯДКА.ВЫХОДНЫЕ ПАРАМЕТРЫ:(В»С>-НОРМАЛИЗОВАННАЯ МАН-гТИССА»(В)-ДОПОЛНИТЕЛЬНЫЕ МЛАДШИЕ РАЗРЯДЫ МАНТИССЫ» г(Н»Ь>-АДРЕС ПОРЯДКА. CY=l-nPH3IIAK АНТИПЕРЕПОЛНЕНИЯ ПО-гРЯДКА.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫгКРОМЕ (Е>,СОХРАНЯЕТСЯ г(Н»Е>. гОЦЕНКА:ДЛИНА-33 БАЙТА»ВРЕМЯ-НЕ БОЛЕЕ (57+122*(N-1)> гTAKT0Б»N<16 г»»»»»мик«кккк»»кккк»к»*ккккк*кккк»к*к»ккх»кккккккк»кккк гПРОВЕРКА МАНТИССЫ НА НОЛЬ MOV ORA jnz MOV RET A»B ЦИКЛ M»A г(А>-СТБ МАН гЕСЛИ не ноль гобнуление порядка гЕСЛИ mah=0»(cy=0) гПРОВЕРКА явно нормализованной мантиссы!3HAK0Bbf,1 и гстАРШИй значащий разряд различны ? ЦИКЛ: mov а»в г(а>-стб МАН xra м rm гЕСЛИ явная нормализация»(cy=0> гПРОВЕРКА неявно нормализованной мантиссы mov А.в ani 7FH sисключение старшего разряда lom Bl ORA с jOic C8 RZ ;ЕСЛИ НЕЯВНАЯ НОРМАЛИЗАЦИЯ.<CY=0> гНОРИАЛИЗАЦИЯ МАНТИССЫгСЙВИГ ВЛЕВО Б <B.CfD> 10DF 7А мои АгВ 10Е0 17 RAL 10Е1 57 MOV В.А 10Е2 79 MOV А.С 10ЕЗ 17 RAL 10Е4 4F MOV С.А 10Е5 78 MOV AfB 10Е6 17 RAL 10Е7 47 MOV В.А ?КОНТРОЛЬ НА АНТИПЕРЕЛОЛНЕНИЕ ПОРЯЯКА.ЕГО КОРРЕКЦИЯ 10Е8 7Е MOV А.М ;<А)-ПОРЯДОК 10Е9 E67F ANI 7FH 5ИСКЛЮЧЕНИЕ ЗНАКА 10ЕВ 37 STC ;CY=1 10ЕС С8 RZ ;ЕСЛИ порядок МИНИМАЛЕН ЮЕП 35 BCR М 10ЕЕ СЗВ710 JMP ЦИКЛ ;ЗАЦИКЛИВАНИЕ 0000 END Программа НМАН2 проверяет условие нормализации мантиссы, представленной в дополнительном коде (в этом случае наличие единицы в старшем цифровом разряде мантиссы еще не свидетельствует о ее нормализованно-сти), и при нормализации влево контролирует порядок суммы на антипереполнение, устанавливая признак переноса CY= 1 при антипереполнении (порядок суммы равен нулю). В заключение сложения выполняются симметричное округление суммы, устранение, если необходимо, переполнения мантиссы после округления и ее запись в память на место первого слагаемого. Заметим, что симметричное округление по первой отбрасываемой цифре денормализованной мантиссы (в случае, если не было нормализации вправо), реализованное в программе, эффективно лишь при сложении чисел с одинаковыми знаками, поскольку только в этом случае знак отбрасываемой цифры совпадает со знаком суммы, и, следовательно, округление выполняется верно, иначе ошибка округления превысит ошибку несимметричного округления. Если такая ситуация нежелательна с точки зрения использования программы в системе, можно либо усложнить процесс симметричного округления в программе, введя анализ знака ошибки, либо упростить программу, исключив это округление. Набор положительных и отрицательных чисел, представленных в формате (8,16), приведен в табл. 2.3. Эти числа можно использовать для тестовой проверки программы СДПЗЗ (в рамках представленного множества). 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.0199 |
|