org 256 ;sine[X]=A*sin(2*Pi*X/T) for X=0,1,...,N-1 xor bx,bx mov cx,256 ;N mov si,773 ;512*A*Pi/T = pocatecni derivace 256x zvetsena mov di,sine item mov [di],bh inc di mov ax,40 ;262144*(Pi/T)^2 = vztah 2nd derivace a fcni ;hodnoty imul bx add bx,si sub si,dx loop item ret sine ; ... tady bude napocitana N-prvkova tabulka hodnot funkce ; Je videt, ze realne konstanty se musi mirne rucne 'doladit' oproti tem ; teoretickym, aby to na amplitude diky zaokrouhlovacim chybam ; nepretekalo. Vzhledem k tomu, ze druha derivace (DX), i navzdory ; 256-nasobne zvetsenym presnostem momentalni funckni hodnoty (BX) a prvni ; derivace (SI), vyuziva jen svych poslednich ~5 bitu z registru a ztraci ; tim presnost, takze je vhodne cely vypocet jeste vice vyskalovat. Na to ; ale nestaci velikost i8086 registru (386 je OK), ale pak se lze zase ; omezit napr. jen na siny, co maji derivaci vzdy <1 (a pak pocitat v SI, ; DX a radcich 3 a 7 s 256x vetsimi konstantami). ; Dalsi moznost je pocitat jen 1/4 periody, dokud je nakumulovana chyba ; mala, a zbytek si uz prevratit/ozrcadlit diky symetriim funkce sinus atd.