Злобин, Григорьев. Программирование арифметических операций в микропроцессорах. - М., 1991.
В этой книге приведено много готовых листингов сложений/вычитаний/умножений/делений для знаковых/беззнаковых разной разрядности операндов. А также рассмотрено множество вспомогательных преобразований. Изложение ведётся для ассемблеров ВМ80, ВМ86 и ВМ87, но от ВМ80 к Z80 перейти, по-моему, не проблема.
И таки табличный способ имеет огромные преимущества в скорости. Но нужно применять его в самом общем виде. Для той же теоремы Пифагора: катет1.катет2=гипотенуза. Если разрядность исходных операндов велика, и объём таблицы сравним с объёмом ОЗУ, то можно (применимо к теореме Пифагора) вспомнить, что достаточно половины её объёма, поскольку сочетание катет1.катет2 даст то же значение, что и катет2.катет1. Если нужно ещё уменьшить таблицу, то можно вспомнить, что если катет1 много меньше катета2, то уменьшение его разрядности вдвое почти не скажется на точности результата. В этом случае нужно лишь прикрутить к алгоритму небольшую логику выбора таблиц, тоже относительно небольших.
Разумеется, конкретика целиком и полностью определяется поставленной задачей в наиболее общей её формулировке, чтобы не получилось: "Как с помощью компьютера правильно повесить картину?" - "Возьмите гвоздь. Забейте его молотком. На гвоздь повесьте картину".




Ответить с цитированием
