Cтраница 1
Частичный остаток удваивается путем сдвига на один разряд влево, при этом в освобождающийся при сдвиге младший разряд частичного остатка заносится очередная цифра делимого. [1]
Когда частичный остаток в прямом коде имеет т нулей подряд, начиная со старшего разряда, надо сдвинуть его на m разрядов влево, записать в очередные разряды частного т нулей и вычесть из сдвинутого остатка делитель. Если результат получен в прямом коде, то в очередной разряд частного записывается единица и частичный остаток сдвигается на все разряды, содержащие нули, после чего вновь производится вычитание делителя. Если после вычитания результат получен в дополнительном коде, то в очередной разряд частного записывается нуль. [2]
Если получен частичный остаток, то вычисление истинного остатка следует продолжить, используя частичный остаток делимого команды FPREM. [3]
Исходное значение частичного остатка полагается равным старшим разрядам делимого. [4]
Из сдвинутого частичного остатка вычитается делитель и анализируется знак результата вычитания. [5]
Из сдвинутого частичного остатка вычитается делитель, если остаток положителен, и к сдвинутому частичному остатку прибавляется делитель, если остаток отричдтедек. [6]
![]() |
Методы выполнения деления. [7] |
Исходное значение частичного остатка полагается равным старшим разрядам делимого. [8]
![]() |
Методы выполнения деления. [9] |
Из сдвинутого частичного остатка вычитается делитель и анализируется знак результата вычитания. [10]
Из сдвинутого частичного остатка вычитается делитель, если остаток положителен, и к сдвинутому частичному остатку прибавляется делитель, если остаток отрицателен. [11]
Команда получения частичного остатка от деления FPREM используется для точного деления чисел. Делитель можно рассматривать как некоторый модуль, и тогда команда FPREM позволяет получить остаток от деления по модулю. Действие команды заключается в сдвигах и вычитаниях, как при ручном делении. Получение точного остатка в тех случаях, когда значения операндов существенно отличаются, может потребовать значительного времени вычислений. Чтобы избежать этого, команда FPREM выполняется итеративно ( частично) под управлением программы. Если остаток от деления, полученный в регистре ST ( 0), меньше делителя, флаг С2 в регистре состояния SR устанавливается в нуль, что указывает на полное завершение команды. В противном случае флаг С2 устанавливается в единицу, что указывает на неполное завершение команды - остаток, полученный в ST ( 0), является частичным. [12]
![]() |
Схема выполнения операции деления с восстановлением остатка. [13] |
Если делимое или очередной частичный остаток меньше делителя, то в очередной разряд частного записывается нуль, к остатку добавляется делитель через схемы Яцр. При использовании алгоритма деления с восстановлением остатка может применяться только накапливающий сумматор. Вычитание может осуществляться либо в обратном, либо дополнительном коде в зависимости от конструкции АЛУ. [14]
![]() |
Структурная схема операционного блока для деления двоичных чисел с фиксированной запятой без восстановления остатка. [15] |