Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
1
Запись исходных чисел в регистры ОА:
- числа в прямом коде (модули чисел)
РСМ(0/n):=|x(0/n)|;
Р2(0/n-1):=|x(n+1/2n)|;
Р1:=|y|;
- числа в дополнительном коде
РСМ(0/n):=[x(0/n)]2;
Р2(0/n-1):=[x(n+1/2n)]2;
Р1:=[y]2
Для целых чисел делимое располагается так, чтобы младший разряд делимого был в (n-1)-м разряде Р2.
Для простых дробей делимое располагается так, чтобы старший разряд делимого располагался в старшем разряде РСМ после кода знака делимого.
Для чисел в прямом коде в знаковом разряде регистров устанавливаются нули
2
Проверка исходных чисел на нуль
В результате проверки исходных чисел на нуль вырабатываются сигналы:
- сигнал нулевого результата при x=0, y 0;
- сигнал деления на нуль при x 0, y=0;
- сигнал вещественной неопределенности при x=y=0
3
Запись в счетчик тактов числа тактов деления
СчТ:=n
Продолжение табл. 5
№
п/п
Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
4
Пробное вычитание (сложение) для анализа на переполнение:
- для чисел в прямом коде анализ на переполнение выполняется вычитанием делителя из делимого
;
- для чисел в дополнительном коде для этой цели выполняется вычитание при x0=y0
, а при x0 y0 сложение в сумматоре
РСМ:=РСМ+Р1
Сигнал переполнения вырабатывается:
- для чисел в прямом коде при С=1 (остаток положительный);
- для чисел в дополнительном коде при РСМ(0)1=x0.
При наличии переполнения операция деления прекращается.
При отсутствии переполнения осуществляется сдвиг влево в РСМ и Р2 после чего начинаются такты деления, для чисел в дополнительном коде формируется код знака частного z0 (см. п.5)
Продолжение табл. 5
№
п/п
Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
5
Определение кода знака частного и его запись в регистр частного:
- для чисел в прямом коде код знака частного определяется по формуле z0=x0Åy0. Р2(n):=z0;
- для чисел в дополнительном коде код знака частного определяется по результату пробного вычитания (сложения) таким образом:
для y0=1 ;
для y0=0 z0=C0;
- код знака частного заносится в младший разряд регистра Р2 перед выполнением тактов деления
Для чисел в прямом коде код знака частного формируется комбинационной схемой, реализующей сложение по модулю 2 кодов знаков делимого и делителя.
Для чисел в дополнительном коде код знака частного формируется автоматически в результате анализа на переполнение
6
Сдвиг влево в регистрах РСМ и Р2 выполняется:
- после пробного вычитания (сложения) в сумматоре;
- после вычитания или сложения в сумматоре в каждом такте деления
РСМ:=ALS(РСМ,1);
Р2:=ALS(Р2,1)
Продолжение табл. 5
№
п/п
Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
7
Сложение или вычитание в сумматоре после анализа на переполнение для чисел в прямом коде:
- при С=0 выполняется сложение
РСМ:=РСМ+Р1;
- при С=1 выполняется вычитание
После каждого сложения или вычитания вырабатывается сигнал С, по которому определяется значение очередной цифры частного:
zi=Ci
8
Сложение или вычитание в сумматоре после анализа на переполнение для чисел в дополнительном коде:
- при РСМ(0)=y0 выполняется вычитание
;
- при РСМ(0) y0 выполняется сложение
РСМ:=РСМ+Р1
После каждого сложения или вычитания вырабатывается сигнал С, по которому определяется в зависимости от знака делителя очередная цифра частного:
zi=Ci при y0 =0;
при y0=1
9
Вычитание из счетчика тактов единицы
СчТ:=СчТ-1
Вычитание единицы из счетчика тактов выполняется после каждого такта деления.
При СчТ=0 вырабатывается сигнал окончания тактов деления
Продолжение табл. 5
№
п/п
Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
10
Коррекция частного при делении чисел в дополнительном коде производится после окончания тактов деления путем прибавления единицы к содержимому регистра частного в следующих случаях:
- при делении ненацело для z0=1;
- при делении нацело для y0 = 1
P2 := P2 + 1
Коррекция частного при делении чисел в прямом коде не требуется
Продолжение табл. 5
№
п/п
Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
11
Восстановление последнего остатка делимого для чисел в дополнительном коде производится, если знаки остатка и делимого не совпадают. Для этой цели:
- при РСМ(0) y0 выполняется сложение в сумматоре
РСМ:=РСМ+Р1;
- при РСМ(0)=y0 выполняется вычитание в сумматоре
.
Для чисел в прямом коде восстановление последнего остатка производится, если он отрицательный, выполнением операции сложения в сумматоре
РСМ:=РСМ+Р1
Признаком отрицательного остатка делимого для прямого кода является появление нуля в регистре C
Таблица 6
Деление чисел c плавающей точкой
№
п/п
Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
1
Запись исходных чисел в регистры мантисс и порядков ОА:
- числа в прямом коде (модули чисел)
РСМм(0/n):=|Mx(0/n)|,
Р2м(0/n-1):=|Mx(n+1/2n)|,
Р1м:=[My],
РСМp:=[Px]2, Р1p:=[Py]2;
- числа в дополнительном коде
РСМм(0/n):=[Mx(0/n)]2,
Р2м(0/n-1):=[Mx(n+1/2n)]2,
Р1м:=[My]2,
РСМn:=[Px]2 ,Р1n:=[Py]2
Мантиссы делимого располагаются так, чтобы старший разряд мантиссы располагался в старшем разряде РСМ после кода знака делимого.
Для чисел в прямом коде в знаковые разряды регистров устанавливаются нули
2
Проверка исходных чисел на нуль
Осуществляется так же как и для чисел с фиксированной точкой
3
Пробное вычитание (сложение) для анализа на переполнение выполняется так же как и для деления двоичных чисел с фиксированной точкой
При наличии переполнения для чисел с плавающей точкой осуществляется восстановление мантиссы делимого с последующей ее денормализацией
Продолжение табл. 6
№
п/п
Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
4
Восстановление мантиссы делимого после пробного вычитания (сложения) при РСМ(0)1=x0.
Для этой цели в сумматоре выполняется:
- сложение, если при анализе на переполнение выполнялось вычитание
РСМм:=РСМ(0)1+P1м;
- вычитание, если при анализе на переполнение выполнялось сложение
При отсутствии переполнения формируется код знака частного для чисел в дополнительном коде и осуществляется сдвиг в РСМ и Р2 после чего начинаются такты деления чисел обоих кодов
5
Денормализация мантиссы делимого после анализа на переполнение производится при РСМ(0)1=x0 сдвигом мантиссы Mx вправо на 1 разряд и увеличением порядка Px на единицу
P¢x=Px+1;
M¢x:=ARS(Mx,1);
РСМp:=РСМp+1
Знак мантиссы делимого после сдвига сохраняется, так как сдвиг арифметический
Продолжение табл. 6
№
п/п
Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
6
Деление мантисс после анализа на переполнение осуществляется по алгоритму деления чисел с фиксированной точкой (для p=0); при этом необходимо иметь в виду, что при наличии переполнения деление мантисс может производиться только после восстановления мантиссы делимого и ее денормализации
Mz:=M¢x/My
Если переполнение имело место, то код знака частного для мантисс в дополнительном коде может сформироваться только в результате первого такта деления, выполняемого после денормализации делимого.
В результате деления нор-мализованных мантисс и в случае деления денормали-зованных мантисс результат деления представляется в нормализованном виде
Продолжение табл. 6
№
п/п
Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
7
Определение кода знака частного и его запись в регистр частного.
Если переполнения не было, то определение кода знака частного и его запись в регистр Р2 производится так же как и для чисел с фиксированной точкой.
Если переполнение было, то код знака частного для мантисс в дополнительном коде определяется только в результате первого такта деления мантисс после денормализации делимого.
Запись кода знака частного в младший разряд регистра Р2 при наличии переполнения осуществляется только после первого такта деления
Р2(n):=z0
Для чисел в прямом коде наличие сигнала переполнения не влияет на определение кода знака частного, так как он определяется по формуле z0=x0 Å y0
8
Восстановление последнего остатка делимого и коррекция частного
Производится так же как и при делении чисел с фиксированной точкой
Продолжение табл. 6
№
п/п
Наименование МО, условия ее выполнения и представление в операторах присваивания
Признаки, вырабатываемые в результате выполнения МО и комментарии
9
Определение порядка результата с учетом возможной денормализации делимого Pz=P¢x-Py
Возможны особые случаи:
- при Pz > Pmax.доп. вырабатывается сигнал переполнения порядка ОV=1;
- при Pz < Pmin.доп. вырабатывается сигнал антипереполнения Uп=1
На рис. 4 для примера представлен фрагмент ГСА операции сложения двоичных чисел с плавающей точкой - сложение мантисс после выравнивания порядков слагаемых и нормализация результата сложения. Для этого фрагмента ГСА в целях его завершенности предполагается, что начальному оператору соответствует размещение результатов выполненных микроопераций выравнивания порядков слагаемых в регистрах РСМм и Р1м, а конечному оператору - микрооперации записи результатов сложения в ОЗУ. Во фрагменте ГСА использованы два возможных способа записи логических условий: в первом случае значение сигнала переполнения разрядной сетки мантисс V, равное единице, свидетельствует о нарушении нормализации результата сложения мантисс влево; во втором случае условие нарушения нормализации результата сложения мантисс вправо записано в виде отношения HR = 0, при его ложности производится нормализация мантиссы результата влево.
Рис. 4 Фрагмент ГСА операции сложения чисел с плавающей точкой