Тригонометрические функции

Discussion in 'WASM.BEGINNERS' started by Ars_prk, Nov 29, 2005.

  1. Ars_prk

    Ars_prk New Member

    Blog Posts:
    0
    Люди, скажите, можно ли как-нибудь написать функцию ArcCos на ассемблере для микроконтроллера с ядром MSC-51 или, другими словами - выразить тригонометрическую функцию с помощь простых математических действий?
     
  2. yureckor

    yureckor New Member

    Blog Posts:
    0
    Ее можно выразить через atan, а вообще все тригонометрические функции вычисляются через ряды или полиномы (короче см. справочник по высшей математике),вот на x86 с использованием встроенного ATAN (на стеке уже лежит аргумент):
    Code (Text):
    1.  
    2.  fld st(0)
    3.  fld st(0)
    4.  fmul
    5.  fld1
    6.  fxch
    7.  fsub
    8.  fsqrt
    9.  fxch
    10.  fdiv
    11.  fld1
    12.  fpatan
    13.  
     
  3. CrazyFun

    CrazyFun New Member

    Blog Posts:
    0
    я бы использовал разложение в степенной ряд по степеням х



    f(x)= f(0)/0! + (f'(0)/1!)*x + (f''(0)/2!)*x^2 +.. +(f''...''(0)/n!)*x^n +

    +.....



    где f''...''(0) - значекние n-й производной функции f в точке 0



    х^n - икс в степенни n



    колличестов слагаемых подбирается в соответствии с требуемой точностью



    подробности смотрим с любом учебнике по матанализу(теория рядов)
     
  4. Quantum

    Quantum Паладин дзена

    Blog Posts:
    0
    yureckor

    MSC-51 не имеет FPU.



    Ars_prk

    Поищите реализации CORDIC - это алгоритмы подсчёта тригонометрических ф-ций через циклические сдвиги и логические операции.
     
  5. SDragon

    SDragon New Member

    Blog Posts:
    0
  6. yureckor

    yureckor New Member

    Blog Posts:
    0
    есть много готовых библиотек для КР580ВМ80, или можно глянуть ПЗУ Спека, дизасм и эмулятор его в сети найти легко.