Показать сообщение отдельно

  #335  
Старый 15.06.2008, 01:30
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
С нами: 11099536

Репутация: 518
По умолчанию

табличное определение синуса и косинуса, делается вместо вычисления ,для уменьшения количества тактов процессора для данных процедур....

угол дается в градусах... вычитая по 360 нормируем до индекса
Код:
    mov  AX,D  ;угол в D
    mov  BX,360
    xor  CX,CX  ;обнуление
@m1:sub  AX,BX
    cmp  AX,CX
    jnl  @m1
в итоге в ax значение не превышающее 360 градусов
операция не искажающая значения синуса и косинуса

далее начинаю вычитать квадранты, видимо таблица содержит не все 360 градусов
Код:
    mov  BX,90
@m3:cmp  AX,BX
    jl   @m4
    sub  AX,BX
    inc  CX
    jmp  @m3
в cx счетчик квадрантов
... далее получение индексов для таблицы и взятие значений.

... само взятие и запоминание в переменных
Код:
    mov  AX,word PTR TableCos[SI]
    mov  C,AX
    mov  AX,word PTR TableCos[BX]
    mov  S,AX

Последний раз редактировалось Delimiter; 15.06.2008 в 01:55..
 
Ответить с цитированием