|
На примере X=0FFFFh:
1. Преобразовываем старший байт в BCD: FF=255=0255h
2. Умножаем на 256 десятично - путем восьмикратного сложения с самим собой И ДЕСЯТИЧНОЙ КОРРЕКЦИИ КАЖДОГО СЛОЖЕНИЯ: 0255h*256=065280h
3. Преобразовываем младший байт в BCD: FF=255=0255h
4. Складываем в BCD (опять с десятичной коррекцией) старшую и младшую BCD-части: 065280h+000255h=065535h, что и надо.
Для АВР это будет некузяво, т.к. там нет команды десятичной коррекции. По времени (для х51) сопоставимо с вычитанием степеней десятки.
Этот же прием годится и для многобайтных чисел, но время может быть сопоставимо с алгоритмом "сдвиг-сложение-коррекция".
E-mail: info@telesys.ru