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

в соответствии с формулами (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 ООАЗ

1310H

иопд

ДОПЕ

поен

КОМЗ

0A3H



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