Cтраница 1
Некорректность деления с фиксированной точкой возникает в тех случаях, когда частное превышает размер регистра, происходит деление на нуль или результат выполнения команды CVB превышает 31 разряд. [1]
![]() |
Цикл деления.| Расположение результата деления в регистровой памяти. [2] |
Проверка некорректности деления была рассмотрена ранее. [3]
Последний случай выявляется пробным вычитанием делителя из старшего слова делимого, и в случае положительного результата событие классифицируется как некорректность деления с фиксированной запятой. Происходит переход по адресу микрокоманды 0.0. С. [4]
Если значение десятичного числа, которое должно быть преобразовано, выходит за указанные выше пределы значений, то происходит прерывание программы из-за некорректности деления с фиксированной точкой. В результате выполнения операции CVB второй операнд не - изменяется. Признак результата при выполнении команды - CVB не устанавливается. [5]
Если значение десятичного числа, которое должно быть преобразовано, выходит за указанные выше пределы значений, то происходит прерывание программы из-за некорректности деления с фиксированной точкой. В результате выполнения операции CVB второй операнд не изменяется. Изменяется только содержимое общего регистра гь Признак результата при выполнении команды CVB не устанавливается. [6]
Перед началом деления мантиссы делителя и делимого проверяются на равенство нулю. При равенстве нулю мантиссы делителя операция не выполняется и происходит прерывание исполнения программы по причине некорректности деления с плавающей запятой. Если окажется, что мантисса делимого равна нулю, то сразу по адресу первого операнда записывается нулевой результат. [7]
Для этого перед его выборкой микропрограммно устанавливается признак сдвига влево. Выбранный операнд сдвигается и помещается в операционные регистры. Некорректность деления обнаруживается пробным вычитанием. Для этого делитель сдвигается на одну цифру вправо ( операнды были выравнены по левым границам) и вычитается из делимого. [8]
Налагается также ограничение на относительные величины делимого и делителя. Если соотношение между делимым и делителем таково, что частное как целое число со знаком не сможет уместиться в 32-разрядном формате, то деление не производится и формируется требование прерывания. Такой случай классифицируется как некорректность деления. Проверка на корректность осуществляется перед началом операции. [9]
Переведенное число должно иметь не более 32 разрядов. Если переводимое число выходит за данные пределы, то в регистр с адресом помещаются младшие 32 разряда переведенного числа и возникает требование прерывания. При этом вырабатывается признак: Некорректность деления с фиксированной запятой. Невозможность размещения в 32 разрядах получающегося в ходе перевода двоичного числа обнаруживается по возникающему переносу из старшего его разряда. [10]
Операция завершается, причем информация, вышедшая за пределы регистра, теряется, и происходит прерывание. Бит 36 в PSW ( из маски программы) маскирует этс прерывание. Если этот бит равен единице, прерывание разрешено; при нулевом значении бита 36 в PSW прерывания не происходит, и переполнение игнорируется 0009 Некорректность деления с фиксированной точкой. Этот вид прерывания происходит, если результат деления с фиксированной точкой или результат команды CVB занимает более 31 бита. Выполнение команды CVB завершается, но вышедшая за пределы регистра информация теряется. [11]
В модели ЕС-1020 делятся абсолютные значения делимого и делителя. Для вычитания из абсолютного значения делимого и положительных текущих остатков используется дополнение кода делителя. При первом вычитании делителя из старших разрядов делимого устанавливается возможность дальнейшего деления. Если первая цифра частного получается равной единице, то это указывает на некорректность деления. [12]
Делимое - это слово двойной длины ( 64 разряда), которое должно быть размещено программистом в двух смежных регистрах: т - четный и г 1 - нечетный. В команде указывается только номер четного регистра. Если в команде указан номер нечетного регистра, то происходит прерывание программы из-за неправильной спецификации. В результате деления получается частное и остаток, которые замещают делимое. Остаток помещается в четный регистр, а частное - в нечетный. Остаток имеет тот же знак, что и делимое. Нулевые частное и остаток всегда положительны. Кроме того делитель не должен быть равен нулю, так как в этом случае возникает прерывание программы из-за некорректности деления с фиксированной точкой. В результате операции деления данные в памяти в регистре гг не изменяются. Признак результата после выполнения команд DR и D не устанавливается. [13]
Делимое - это слово двойной длины ( 64 разряда), которое должно быть размещено программистом в двух смежных регистрах: г - четный и т - ( - 1 - нечетный. В команде указывается только номер четного регистра. Если в команде указан номер нечетного регистра, то происходит прерывание программы из-за неправильной спецификации. В результате деления получается частное и остаток, которые замещают делимое. Остаток помещается в четный регистр, а частное - в нечетный. Остаток имеет тот же знак, что и делимое. Нулевые частное и остаток всегда положительны. Кроме того делитель не должен быть равен нулю, так как в этом случае возникает прерывание программы из-за некорректности деления с фиксированной точкой. В результате операции деления данные в памяти и в регистре г2 не изменяются. Признак результата после выполнения команд DR и D не устанавливается. [14]