- •Учебная дисциплина: "Организация эвм и систем"
- •Реферативный материал. Двоично-десятичная система счисления.
- •Преобразование двоичных чисел в двоично-десятичные.
- •Форматы представления десятичных чисел
- •Ascii-коды десятичных цифр
- •Операции двоично-десятичной арифметики
- •Сложение
- •Вычитание
- •Описание программы-эмулятора.
- •Авторское описание эмулятора
- •Обоснование выбора
- •Практическая часть. Алгоритм решения задачи
- •Полный листинг программы с комментариями. Процедура записи в память служебных фраз.
- •Вход в главную часть программы.
- •Процедура ввода исходных данных.
- •Процедура преобразования исходного массива 16ричных констант в их 2-10 коды.
- •Процедура преобразования 2-10 кодов в коды кои-7.
- •Выход из процедуры кои-7 преобразования.
- •Процедура вывода на экран результатов 2-10 преобразования.
- •Процедура вывода на экран результатов преобразования в коды кои-7.
- •Выводы.
- •Список использованных источников.
Преобразование двоичных чисел в двоично-десятичные.
Арифметико-логическое устройство AVR-микроконтроллеров (как и других микропроцессоров) выполняет элементарные арифметические и логические операции над числами, представленными в двоичном коде. В двоичном коде считываются результаты преобразования АЦП, в двоичном коде (в формате целых чисел или чисел с плавающей точкой) удобно выполнять обработку результатов измерения. Однако, когда окончательный результат отображается на индикаторе, он должен быть преобразован в десятичный формат, удобный для восприятия человеком.
В данном разделе рассматриваются программы преобразования двоичных чисел в двоично-десятичные.
Форматы представления десятичных чисел
В настоящее время распространены два формата представления десятичных чисел в микропроцессорах - упакованный двоично-десятичный код (BCD-Binary-Coded Decimal) и неупакованный десятичный код.
Упакованный BCD-код - это такое представление десятичного числа, когда каждая десятичная цифра представляется 4-х битным двоичным позиционным кодом 8-4-2-1. При этом байт содержит две десятичные цифры. Младшая десятичная цифра занимает правую тетраду (биты 3 : 0), старшая - левую тетраду (биты 7 : 4). Многоразрядные BCD-числа занимают несколько смежных байт. Если число является знаковым,то для представления знака в BCD-формате отводится старшая тетрада старшего байта. Для кодирования знака можно использовать шесть двоичных кодовых комбинаций, которые не используются для представления десятичных цифр. Это коды 1010-1111 (A-F в шестнадцатеричном представлении). Обычно для кодирования знака плюс применяют код 1100 (С), а для знака минус - 1101 (D). На рисунке показано BCD-представление десятичного числа "-12345":
Двоично-десятичное представление числа "-12345"
Неупакованный десятичный код является подмножеством международной таблицы кодирования символов ASCII (Таблица). Видно, что для хранения неупакованных десятичных чисел требуется в два раза больше памяти, так как каждая цифра представляется 8-битным кодом.
Ascii-коды десятичных цифр
Десятичная цифра |
ASCII-код |
Десятичная цифра |
ASCII-код |
0 |
$30 |
5 |
$35 |
1 |
$31 |
6 |
$36 |
2 |
$32 |
7 |
$37 |
3 |
$33 |
8 |
$38 |
4 |
$34 |
9 |
$39 |
Операции двоично-десятичной арифметики
Операции двоично-десятичной арифметики выполняются в два этапа:
- двоично-десятичные числа обрабатываются как двоичные коды;
- выполняется коррекция результата с целью получения двоично-десятичного числа. Обработка двоично-десятичных чисел в компьютере выполняется побайтно. При этом надо учитывать следующие флаги F - перенос между байтами, AF - вспомогательный перенос (между двоично-десятичными цифрами в байте).
Сложение
Как было отмечено выше операция выполняется в два этапа: сложение и коррекция. После сложения в тетрадах может оказаться недопустимая комбинация или из тетрады может возникнуть перенос. Алгоритм коррекции состоит из двух шагов:
1) Если AF = 1 или младшая тетрада меньше 9, но больше 15, то к ней прибавляется код 6. Возникающий перенос прибавляется к старшей тетраде;
2) Если CF = 1 или старшая тетрада содержит недопустимую комбинацию, то к результирующему байту прибавляется код 60h.
Слева приведен пример сложения двух чисел представленных в двоично-десятичном формате: