Десятичная арифметика
Двоичная арифметика
|
|
|
Первую схему обработки данных целесообразно применять при сравнительно небольших объемах перерабатываемых данных и достаточно большом объеме вычислений (операций), приходящихся на единицу данных. Подобным свойством обладают так называемые научно-технические задачи.
Вторую схему обработки целесообразно применять при больших объемах обрабатываемых данных и небольшом объеме вычислений, приходящихся на каждую единицу данных. Подобным свойством обладают так называемые экономические (коммерческие) задачи.
Аппаратная поддержка второй схемы обработки данных в ЭВМ предполагает наличие в составе процессора помимо традиционного двоичного АЛУ еще и десятичного АЛУ. Использование подобных АЛУ характеризуются компьютеры (ЭВМ), относящиеся к классам Main Frame. В ПК и рабочих станциях на базе практически всех современных процессоров десятичное АЛУ отсутствует.
Для наиболее типичной (классической) схемы обработки этапы преобразования данных из одной системы счисления в другую принципиально могут быть реализованы либо на аппаратном, либо программном уровне. В системе команд процессоров Intel отсутствуют как таковые команды преобразования данных из десятичной системы в двоичную и обратно. Подобные команды имели место в системе команд вычислительной системы IBM/370.
Аппаратная поддержка преобразования десятичного числа в упакованном формате в двоичное число с плавающей запятой в расширенном формате (80 бит), а также обратное преобразование реализуются специальными командами FPU.
FBLD – Load Binary coded Decimal (загрузка с преобразованием). По этой команде осуществляется пересылка десятичного числа в BCD-формате из памяти во внутренний регистр данных FPU с преобразованием из десятичной системы счисления в двоичную форму числа с плавающей запятой, представленного в расширенном формате (внутренний формат FPU).
Обратное преобразование из двоичной системы в десятичную реализуется командой FBSTP – Store BCD Integer and Pop. По этой команде осуществляется пересылка данных из вершины регистрового стека FPU в память с предварительным преобразованием двоичного числа с плавающей запятой, упакованной в десятичный формат. Выбираемый операнд удаляется из регистрового стека (POP).
Внутренняя регистровая память данных блока FPU включает в себя 8 80-битных регистров, организованных в виде так называемого регистрового стека.
Этими командами поддерживается 80-битный BCD-формат для представления упакованного десятичного числа. В данном формате представлено 18 десятичных цифр, которые занимают 72 младших разряда формата. Старший байт формата используется для представления знака, который занимает в нем старший бит. Десятичное число предполагается целым. Как таковые, десятичные числа в BCD и ASCII – форматах имеют аппаратную поддержку в процессорах Intel на уровне так называемых команд десятичной (BCD) и ASCII – коррекции. К ним относятся:
BCD-коррекция:
• DAA (Decimal Adjust after Addition);
• DAS (Decimal Adjust after Subtraction).
ASCII-коррекция:
• AAA (ASCII Adjust after Addition) ;
• AAS (ASCII Adjust after Subtraction);
• AAM (ASCII Adjust after Multiply);
• AAD (ASCII Adjust before Division).
Команды коррекции используются для преобразования результатов соответствующей операции в корректную десятичную форму. При этом предшествующая арифметическая операция, выполняемая командами ADD, SUB, MUL , предполагает использование двоичной арифметики применительно к десятичным числам. Все команды коррекции поддерживают минимальный формат данных – 1 байт.
Для операции деления команда коррекции AAD в машинной программе предшествует команде DIV, т.е. корректируется не результат деления, а операнд - делимое.