[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
...заодно наткнулся на то, что DIV 32/16 в XA некорректно отрабатывает переполнение, т.е. портит остаток, который, собственно, и используется в процедурах перевода bin<->bcd. Написал телегу в Philips, они пробурчали, что да, мол, похоже, разберемся, через год выпустили новую ревизию кристалла со старым глюком... Но тем не менее, через DIV (когда он быстрый и ёмкий) обычно получается быстрее всего.
Кстати, через Х*65536/100000 с последующими умножениями на 10 я тоже писал аналогичные функции на АСМе, получалось также вполне недурственно. Все зависит от возможностей конкретного MCU - в AVR, скорее всего, самым эффективным методом будет вычитание степеней десятки с одновременным тупым поразрядным инкрементированием ASCII-результата.
E-mail: info@telesys.ru