assembly68hc11

Assembly code for 68HC11 to calculate sin(x)


What would be the assembly code for 68HC11 to calculate value of sine using either Taylor series or a lookup table?

Display value will be only in integer. How would a lookup table work in this case? How can it be implemented using Taylor series?


Solution

  • I haven't done any 68HC11 programming in a long time, so I won't be able to give you exact instructions, but you want to do more-or-less the following:

    1. Define a table in memory that has 256 (or however many) values for Sin(x), over one quadrant, in the range [0-Pi/2].
    2. Convert your input to the range [0-Pi/2], keeping track of which quadrant it was originally in. For Q2, you want the value (Pi/2-x), for example.
    3. Look up the adjusted value in the table, negating the result if the original angle was in the 3rd or 4th quadrants.

    Specifics would of course depend on input and output ranges, but generally speaking, you'll use indexed addressing mode, with the index register pointing into the table, or alternatively, extended addressing, with the offset set by modifying the opcode.