7.Двоичная и двоично-десятичная арифметика. Форматы представления BCD-чисел.
Двоично-десятичные числа
Двоично-десятичные - специальный вид представления числовой информации, в основу которого положен принцип кодирования каждой десятичной цифры числа группой из четырех бит. При этом каждый байт числа содержит одну или две десятичные цифры в так называемом двоично-десятичном коде (BCD - Binary-Coded Decimal).
Ассемблер позволяет задавать BCD-числа в двух форматах
-
упакованном формате - в этом формате каждый байт содержит две десятичные цифры. Десятичная цифра представляет собой двоичное значение в диапазоне от 0 до 9 размером 4 бита. При этом код старшей цифры числа занимает старшие 4 бита.
Следовательно, диапазон представления десятичного упакованного числа в одном байте составляет от 00 до 99; -
неупакованном формате - в этом формате каждый байт содержит одну десятичную цифру в четырех младших битах. Старшие четыре бита имеют нулевое значение. Это так называемая зона. Следовательно, диапазон представления десятичного неупакованного числа в одном байте составляет от 0 до 9
Двоично-десятичные числа складывают по правилам двоичного сложения. Однако
двоичное сложение может иногда давать неверный результат и тогда приходится выполнять коррекцию результата.
Коррекция заключается в прибавлении кода 0110 к тем тетрадам результата в которых либо:
а. Получен код не имеющий смысла в двоично-десятичной системе (например 1100);
б. Был сформирован межтетрадный перенос в старшую тетраду.
Если отдельные тетрады скрорректированного результата все еще содержат запрещенные коды, то их подвергают повторной коррекции.
Вычитание двоично-десятичных чисел производится по правилам двоичного вычитания с вводимой в необходимых случаях коррекцией результата. Такая коррекция заключается в вычитании кода 0110 из тех тетрад результата, которые использовали межтетрадный заем.
Специальных арифметических команд для двоично-десятичных чисел процессор не содержит. Для выполнения арифметических операций с двоично-десятичными числами используются команды двоичной арифметики, результат исполнения которых корректируется с помощью специальных функций, представленных в табл. 1.
Наличие двоично-десятичных чисел и действий с ними позволяет решить проблему работы с длинными числами.
Примечание: команды amm и aad часто используются для преобразования чисел из двоичной формы представления в двоично-десятичную, и обратно.
Команды преобразования типов
В том случае если в арифметических операциях участвуют данные различных типов их необходимо преобразовать к одному типу. Операции преобразования типов выполняют команды представленные в табл. 2.