Вы, похоже, пишите про обычный ассемблер. Это старое программирование из прошлого века. Я на нём, практически, ничего не писал, только в самом начале, когда изучал МК.
В, условно говоря, современном ассемблере, есть функция логарифма, вызов которой – одна строчка программы.
Необходимо ещё разобраться с используемыми регистрами, это всё-таки ассемблер. Надо почитать описание функции, регистры, которые требуется сохранить, забросить в стек, а после извлечь из стека. Это будет ещё пару строк программы.
Займёт по времени, скажем, десяток минут – вот и всё время для логарифма.
Это не «изыск», а обычная работа на современной программе, вполне подойдёт для зарабатывания «денешшшшек».
Ради интереса посмотрел объём, заняло 526 байт.
Этот логарифм знаковый. Если аргумент меньше условной единицы (это число 1024), то выдаёт отрицательные значения, как и полагается. Правда, в сторону минуса работает недалеко, на один шаг аппроксимации.
Знаковый логарифм несколько больше по объёму, но удобен для разработки измерителей концентраций веществ. Обычно сигнал при распространении затухает по экспоненте в соответствии с концентрацией вещества, требуется логарифм. Если появляются отрицательные значения, надо провести калибровку прибора.
float никогда не использовал, плохо представляю, когда может понадобиться. Если только при использовании старой программы, но я на такой не работаю.
Как я понял, вы работаете в прерывании. В прерывании пишу только самый необходимый минимум, всё остальное – в основном цикле. Для меня работа в прерывании – источник всяческих проблем, зачем они нужны. Правда, ситуации бывают разные.



