Работа схемы двоично-десятичной коррекции

Структурная организация МК48.

Основой структуры МК48 является процессор. Основа процессора – 8-разрядное АЛУ, которое выполняет арифметические, логические, сдвиговые операции над данными в двоичном и двоично-десятичном коде. Основной элемент АЛУ – восьмиразрядный аккумулятор. Имеется схема десятичной коррекции (СДК), предназначенная для обработки двоично-десятичных данных.

Представления чисел в двоичном и двоично-десятичном виде отличаются. Речь пойдет о числе, занимающем 8 двоичных разрядов (байте). В двоично-десятичном (BCD) представлении байт разбивается на два полубайта (тетрады) и в каждую тетраду записывается цифра в двоичном виде. Например, число 35, записанное в BCD-формате будет иметь вид: 00110101. Как видно из примера, в старшей тетраде записана цифра 3, а в младшей цифра 5. Для записи числа имеющего большую разрядность потребуется и больше тетрад. Диапазон BCD-чисел, занимающих один байт равен 0…99. Еще примеры: десятичное число 83=10000011 в BCD-формате,

64=01100100.

Обратите внимание, что эти числа в двоичной системе будут иметь другое представление: 83=01010011 64=01000000.

При выполнении арифметических операций над BCD-числами, так как процессор представляет числа только в двоичном виде, может получиться неверный результат. Например, сложим два числа, представленные в BCD-формате. Это числа 69 и 27.

69(BCD)=01101001, 27(BCD)=00100111.

Процессор произведет сложение по правилу сложения двоичных чисел и получит в результате: + 01101001

00100111

Если продолжать рассматривать результат в BCD-формате, то получим неверный результат. Получили 90(BCD), а должны были получить 96(BCD).

Другой пример.

19(BCD)=00011001,66(BCD)=01100110.

+ 00011001

01100110

Получилось число, младшая цифра которого выходит за пределы максимального представления чисел в BCD-формате.

Для того чтобы и в первом и во втором примере скорректировать результат, то есть получить верное BCD-представление числа, используется схема десятичной коррекции, которая исправляет результат любой арифметической операции по команде DA A.

По команде DA A выполняется:

1.Если младшая тетрада результата больше 9 или при выполнении операции был перенос из 3 разряда в 4, то к младшей тетраде добавляется 6(0110).

В первом примере был перенос из 3 разряда в 4. Поэтому команда DA A добавит к результату 0110, и правильный результат будет 10010110. Для второго примера после добавления 0110, так как младшая тетрада больше 9, получится результат

+01111111

0110

10000110, равный в BCD-представлении 85.

2.Если старшая тетрада результата больше 9 или был перенос из 7 разряда, то к старшей тетраде добавляется 0110=6.

Вывод. Если в программе числа представлены в BCD-формате, то после арифметических команд в программе необходимо вставлять команду DA A.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: