Cтраница 2
Набор команд ( см. приложение, табл. 10) для действий над десятичными числами дает возможность выполнять арифметические операции: сложения, вычитания, умножения и деления. Кроме того, в этом наборе имеются команды для преобразования десятичных данных из распакованного формата в упакованный и обратно, для сравнения операндов, их пересылки. Перечисленные операции выполняются над операндами, находящимися в основной памяти. [16]
В моделях ЕС ЭВМ помимо операций двоичной арифметики выполняются операции над десятичными числами, представленными в двоично-десятичном коде. Структуры упакованного и распакованного форматов представлены на рис. 2.6. Преобразование десятичных чисел из распакованного формата в упакованный и обратно выполняется в ЭВМ. [17]
![]() |
Команды десятичной арифметики.| Порядок замещения символов. [18] |
При выполнении операции СР второй операнд, выравненный до длины первого операнда, сравнивается с первым операндом. При выполнении операций ED и EDMK второй операнд ( типа Р) побайтно преобразуется в распакованный формат ( типа Z) и замещает и поле образца ( первый операнд) символы Выбор цифры и Начало значимости. Порядок замещения символов образца дан в табл. 2.29. При выполнении команды F. DMK в общий регистр 1 дополнительно заносится адрес первой цифры, находящейся в отредактированном поле. [19]
После ввода каждой записи файла данные из области ввода пересылаются в области памяти, отведенные для полей записи. При этом текстовые данные и числа в упакованном формате не изменяются, а числа в распакованном формате преобразуются в упакованный. [20]
Операции пересылки могут быть использованы при приведении чисел, подготовленных на носителях данных со знаком в отдельной позиции, во внутренний формат. Как было сказано ранее, в РПГ числа на носителях данных могут быть представлены в упакованном или распакованном формате. [21]
Распакованный формат в сравнении с упакованным требует в 2 раза большей памяти, однако он очень хорошо согласуется с текстовым представлением десятичных цифр в коде КОИ-7. Для перевода распакованного 2 / 10-кода в текстовой формат достаточно в старшую тетраду каждой цифры записать код 0011В, а замена каждой старшей тетрады текстового представления десятичного числа нулями приведет к его переводу в распакованный формат 2 / 10-кода. [22]
Первые два типа поддерживают десятичную арифметику в упакованном формате, остальные - в распакованном. Для архитектур с аккумулятором или вычислительным стеком команды десятичной коррекции безадресные и работают либо с аккумулятором, либо с вершиной стека соответственно. Операции десятичной коррекции обычно являются байтно ориентированными, т, е, за один командный цикл допускается коррекция либо двухразрядного десятичного числа упакованного формата, либо одной десятичной цифры распакованного формата. Рассмотрим более подробно операцию ААА. [23]
Числовые поля могут содержать десятичные числа в упакованном или распакованном формате. Упакованный формат предполагает, что в каждом байте располагаются две цифры числа. Знак числа размещается в цифровой части ( биты 4 - 7) самого правого байта числа. В распакованном формате на одну цифру числа отводится один байт, при чем цифровая часть байта содержит цифру числа, а зональная ( биты О - 3) - значение F. Знак числа располагается в зональной части самого правого байта числа. В обоих форматах в качестве знака плюс используется С, а в качестве знака минус - D. [24]
Данные типа цифровая строка знаков объявляются с атрибутом PICTURE с цифровой спецификацией шаблона. Цифровая спецификация шаблона обычно содержит один или несколько знаков для обозначения цифровых позиций, знак для указания положения подразумеваемой десятичной точки и, возможно, знаки редактирования для придания числу нужного формата. Спецификация заключается в кавычки. В памяти цифровые строки хранятся в распакованном формате. [25]
Эта операция позволяет использовать в основной программе данные подпрограммы на Ассемблере. Имя этого данного указывается в графе Поле результата. В графе Длина поля указывается количество байт, занимаемых полем в подпрограмме, если это поле содержит текстовое данное. Если же поле содержит число, то само число должно находиться в поле в упакованном формате, а в графе Длина поля должна быть указана длина поля относительно распакованного формата данных. В графе Длина дробной части указывается 0, если число целое, и количество десятичных знаков после подразумеваемой точки, если число дробное. [26]
![]() |
Размещение информации на магнитной ленте. [27] |
При вводе информации с перфоленты в ЕС ЭВМ осуществляется перекодирование любого входного кода в двоичный код обмена информацией ( ДКОИ), поскольку он применяется в ЕС ЭВМ в качестве внутримашинного кода. Различные коды, используемые при занесении информации на перфоленту, требуют различных таблиц перекодировки. Десятичные числа представляются как целые и могут быть расположены в памяти в упакованном и распакованном ( зонном) форматах. В упакованном формате в одном байте может размещаться по две десятичные цифры. В распакованном формате каждая десятичная цифра располагается в четырех младших разрядах байта, а в четырех старших - зона. Чаще всего при вводе информации с перфоленты используется зонный формат. Из байт в памяти ЕС ЭВМ составляются поля переменной и фиксированной длины. [28]
Программа подготовки данных является главным звеном системы. Именно она выполняет все процедуры подготовки данных. Программа написана на языке Кобол. В процессе работы она обращается к двум подпрограммам, написанным на Ассемблере. Одна из них обеспечивает непосредственный обмен с дисплеями, а другая выполняет перекодировку записи из формата с разделителями в распакованный формат, где добавлены ведущие нули и скопированы значения незаданных реквизитов из предыдущей записи. [29]
![]() |
Пример обновления таблиц. [30] |