табличное определение синуса и косинуса, делается вместо вычисления ,для уменьшения количества тактов процессора для данных процедур....
угол дается в градусах... вычитая по 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