Код сборки для 68HC11 для вычисления sin (x) - PullRequest
2 голосов
/ 24 декабря 2009

Каким будет код сборки для 68HC11 для расчета значения синуса с использованием либо ряда Тейлора, либо таблицы соответствия?

Отображаемое значение будет только в целых числах. Как будет работать таблица поиска в этом случае? Как это можно реализовать с помощью серии Тейлора ?

Ответы [ 3 ]

4 голосов
/ 24 декабря 2009

Если вы ищете решение с плавающей запятой, вам нужно сначала реализовать операции с плавающей запятой. Эта часть будет нетривиальной на 68HC11, который не поддерживает даже 32-битные операции. После этого вычислить грех легко, но очень медленно. ; -)

Используйте справочную таблицу.

3 голосов
/ 24 декабря 2009

Не используйте серию Тейлора.

Google нашел это .

2 голосов
/ 24 декабря 2009

Я давно не программировал 68HC11 , поэтому я не смогу дать вам точные инструкции, но вы хотите более или менее выполнить следующее:

  1. Определить таблицу в памяти, которая имеет 256 (или столько же) значений для Sin (x) по одному квадранту в диапазоне [0-Pi / 2].
  2. Преобразуйте ваш входной сигнал в диапазон [0-Pi / 2], отслеживая, в каком квадранте он был первоначально. Для Q2 вам нужно, например, значение (Pi / 2-x).
  3. Просмотрите скорректированное значение в таблице, отрицая результат, если исходный угол был в 3-м или 4-м квадрантах.

Специфика, конечно, будет зависеть от входного и выходного диапазонов, но, вообще говоря, вы будете использовать режим индексированной адресации с регистром индекса, указывающим на таблицу, или, альтернативно, расширенную адресацию со смещением, установленным путем изменения кода операции.

...