|
Главная -> Появление первого микропроцессора 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.17), (2.18) деление выполняется в три этапа: 1) определяется порядок частного путем вычитания порядка делителя из порядка делимого; 2) находится мантисса частного путем деления мантиссы делимого на мантиссу делителя по правилам арифметики с фиксированной запятой; 3) производится, если необходимо, нормализация частного вправо. Диапа зон мантиссы частного имеет вид о-1 1-1 mill \Y\ [Z[,nan I -2~" „ Следовательно, при делении возможны переполнение мантиссы частного (но не потеря значности) и ее нормализация вправо в соответствии с формулой (2.18). Как и в случае умножения чисел, при делении возможны переполнение и антипереполнение порядка частного, которые необходимо выявлять. Кроме того, следует фиксировать условие деления на нулевой делитель. Вычисление смещенного порядка частного производится по формуле тг- т,,см + 2* = rnliсм. Граничная относительная ошибка деления чисел с плавающей запятой определяется, как и для чисел с фиксированной запятой, выражением (1.18) при условии отсутствия переполнения и антипереполнения порядка частного. Программа ДДПЗЗ выполняет деление чисел с плавающей запятой в формате (8,16): 12с0 org 12с0н 0090 комз set 90н 0с20 ддф17 set 0с20н lOFfi пма2 set lOFAH ддпзз: ;подпрогр-амма деления 3-байтных двоичных чисел с пла-(бающеи запятой б дополнительном коде формата (8г16)= (пор.ман).где байт порядка содержит бит знака ман~ гТИССЫ и челочисленныи двоичный порядок со смещением S+tOH.A 2 байта мантиссы-стб и млб-дробное нормализо-;ванное число в дополнительном коде.. (входные параметры:(б.с)-адрес делимого.(H.L)-АДРЕС (делителя.выходные параметры:(в.о-адрес частного ((частное на месте делимого).cyl-признак переполнения (или антипереполнения порядка частного.признак нуле-(вого делителя.,исп0.чьзуются все регистры.сохраняются ((б.с).(H.L).глубина стека-8.используются подпрограммы: (»к0мз»,5(ддф17«г»пма2». 12С0 CII9000 12СЗ 37 12С4 С8 12С5 ЕВ 12С6 СВ9000 12С9 ЕВ 12СЙ С8 12СВ 12СС 12СВ 12СЕ 12CF li? 12ВЗ 12D4 12В5 12В7 12В8 12В9 12ЕВ 12ВВ 12ВЕ 12BF 12Е2 12ЕЗ 12Е4 50 59 CS Е5 lA Е680 E67F E67F СЙ40 90 37 FAF912 Bl 47 C5 12E5 CB200C 12E8 El 12E9 7C 12EA 12 12EB EB 12EC B2F5i2 12EF CDFAIO 12F2 BAF912 12F5 23 12F6 70 JОЦЕНКА:ДЛИНA-59 ЕАИТ (+119 БАЙТ ПОДПРОГРАММ).БРЕМЯ-tE ГВОЛЕЕ 2780 ТАКТОВ (С УЧЕТОМ ПОДПРОГРАММ). гПРОВЕРКА ДЕЛИТЕЛЯ ДЛ НА НОЛЬ CALL КОМЗ ?2=1гЕСЛИ ЙЛ:--0 STC ;CY=1 RZ 5 ЕСЛИ ДЕЛИТЕЛЬ=:0рС¥=1 гПРОВЕРКА ДЕЛИМОГО ДМ НА НОЛЬ XCHG CALL. КОМЗ гг=1»ЕСЛИ ДМ=0 XCHG RZ гЕСЛИ ДЕЛИМ0Е=0,СУ.=.О гДЛ и ДМ НЕ НОЛЬ.ОПРЕДЕЛЕНИЕ ПОРЯДКА И ЗНАКА ЧАСТНОГО мои мои PUSH PUSH LBAX XRA ANI MOV MOV ANI MOV LBAX ANI ABI SUB STC JM ORA MOV PUSH 80H C?A AfM 7FH BrA В 7FH 40H В г(ВгЕ)-АДРЕС ЙМ гСОХРАНЕНИЕ АДРЕСА ДМ гСОХРАНЕНИЕ АДРЕСА ДЛ г (А) -БАЙТ ПОРЯДКА ДМ г(М)-БАЙТ ПОРЯДКА ДЛ ;(А7)-ЗНАК ЧАСТНОГО гСОХРАНЕНИЕ ЗНАКА В (С) гИСКЛЮЧЕНИЕ ЗНАКА ДЛ !(В)-ПОРЯДОК ДЛ гИСКЛЮЧЕНИЕ ЗНАКА ДМ гУЧЕТ СМЕШЕНИЯ ПОРЯДКА г(А)-ПОРЯДОК ЧАСТНОГО гсу=1 гЕСЛИ ПЕРЕПОЛНЕНИЕ ПОРЯДКА гВСТАВКА ЗНАКА В ЕАИТ ПОР ПЕР1 С ВтА В гВЫЧИСЛЕНИЕ МАНТИССЫ ЧАСТНОГО CALL ДДФ17 г(В!С)-ЧАСТНОЕ Н АгН В POP MOV STAX XCHG JNC гСОХРАНЕНИЕ БАЙТА ПОР гВОССТАНОБЛЕНИЕ БАЙТА ПОР гЗАПОМИНАНИЕ БАЙТА ПОР г(HrL)-АДРЕС ДМ ПЕР2 гЕСЛИ НЕТ ПЕРЕПОЛНЕНИЯ гКОРРЕКЦИЯ ПОРЯДКА ЧАСТНОГО CALL ПМА2 гСУ=1>ЕСЛИ ПЕРЕПОЛНЕНИЕ ПОРЯДКА JC ПЕР1 гЕСЛИ ПЕРЕПОЛНЕНИЕ гЗАПИСЬ МАНТИССЫ ЧАСтого В ПАМЯТЬ ПЕР2: INX MOV 12F7 23 12F8 71 12F9 Е1 12FA С1 12FB С9 0000 INX MOV ПЕР1.- POP POP RET ENB MjC Н гВОССТАНОБЛЕНИЕ АДРЕСА ДЛ г ВОССТАНОВЛЕНИЕ АДРЕСА ДМ гС¥=1,ЕСЛИ ОШИБКА ПОРЯДКА Программа использует обращение к подпрограмме КОМЗ (см. п. 2.2.1) для проверки делимого и делителя на нуль. Далее при ненулевых числах программа определяет порядок и знак частного и возможность переполнения порядка. Если переполнения порядка нет, программа С помощью подпрограммы деления ДДФ17 (см. п. 1.5.3) находит мантиссу частного, устраняет, если необходимо, ее переполнение с помощью подпрограммы ПМА2 (дополнительный вход в программу ПМАН2, см. п. 2.2.1) и записывает результат в память на место делимого. В случае переполнения, антипереполнения порядка и деления на нуль устанавливается признак переноса CY= 1, который для программы более высокого уровня является сигналом некорректности деления. Для тестирования программы ДДПЗЗ можно использовать данные табл. 2.3. 2.5. умножение целого числа на число с плавающей запятой Применение арифметики с плавающей запятой в микропроцессорных информационно-измерительных системах требует расширения стаьадартного набора арифметических действий операцией умножения числа с плавающей запятой на Л/-байтное целое число. Дело в том, что в таких системах многие измерительные величины накапливаются в целочисленном виде, например в виде количества импульсов, поступающих на вход системы от объекта измерения. Обычно каждый импульс несет определенную информацию об объекте, например сообщает о некотором кванте энергии, выработанной или потребленной объектом измерения, т. е. обладает некоторым заранее известным числовым весом. Умножая весовой коэффициент, представляемый в форме с плавающей запятой, на количество импульсов, поступивших в систему за определенное время, можно определить интегральные характеристики объекта измерения. Программа УЦПЗ выполняет умножение трехбайтного числа С плавающей запятой на Л-байтное (Л < 256) целое число, размещенное в памяти в порядке возрастания адресов от МЛБ к СТБ этого числа: 1310 0058 0050 0078 0090 ООАЗ
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.0149 |
|