Ассемблерный код для 68HC11 для вычисления sin(x)

StackOverflow https://stackoverflow.com/questions/1959335

  •  21-09-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Используйте таблицу подстановки.

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

Google нашел это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top