Assembler-Code für 68HC11 zu berechnen sin (x)
Frage
Was der Assembler-Code für 68HC11 zu berechnen Wert von Sinus wäre entweder Taylor-Reihe oder eine Lookup-Tabelle?
Anzeigewert wird nur in integer sein. Wie würde eine Lookup-Tabelle Arbeit in diesem Fall? Wie kann es Taylorreihe implementiert werden, indem?
Lösung
Ich habe keine 68HC11 Programmierung in einer langen Zeit, so dass ich ‚gewonnen t Lage sein, Sie genaue Anweisungen zu geben, aber Sie tun mögen, mehr oder weniger folgende:
- Definieren einer Tabelle im Speicher, die 256 (oder wie viele) Werte für sin (x) hat, über einen Quadranten, in dem Bereich [0-Pi / 2].
- Konvertieren Sie Ihre Eingabe in den Bereich [0-Pi / 2], Spur davon zu halten Quadranten war es ursprünglich in. Für Q2 Sie den Wert wollen (Pi / 2-x), zum Beispiel.
- den eingestellten Wert in der Tabelle nachschlagen, negiert das Ergebnis, wenn der ursprüngliche Winkel in der 3. oder 4. Quadranten war.
Besonderheiten wären natürlich von Ein- und Ausgangsbereichen, aber im Allgemeinen, werden Sie Modus indiziert Adressierung verwenden, mit dem Indexregister in die Tabelle zeigt, oder alternativ erweiterte Adressierung, mit dem Offset-Satz durch den Opcode zu modifizieren.
Andere Tipps
Wenn Sie eine Floating-Point-Lösung suchen, müssen Sie zunächst Gleitkommaoperationen implementieren. Dieser Teil wird nicht trivial auf einem 68HC11, die selbst für 32-Bit-Operationen keine Unterstützung hat. Danach, sin Berechnung ist einfach, aber sehr langsam. ; -)
Verwenden Sie eine Lookup-Tabelle.
Verwenden Taylor-Reihe nicht.
Google gefunden diese .