; ; Programmodul 'COSINUS' zur Berechnung von cos(x) ; nach Vorbereitung der Daten durch Modul 'XICALC' ; ; IN var x1bog : Winkel in Bogenmass ; var x2bog : x1bog^2 ; var x4bog : x1bog^4 ; var x6bog : x1bog^6 ; var x8bog : x1bog^8 ; ; OUT reg de : var cx - cos(x) * 2^15 ; ; REG a,f,b,c,d,e,h,l ; extrn multi,divi ram equ 2000h ; Festlegung des Variablenblocks x1bog equ ram ; im RAM x2bog equ x1bog + 2 x4bog equ x2bog + 2 x6bog equ x4bog + 2 x8bog equ x6bog + 2 fc1 equ 8000h ; Koeffizienten fci der i-ten Glieder fc3 equ 2*3 fc4 equ 3*5*6 fc5 equ 2*3*5*6*7 ld hl,fc1 ; erste Zwischensumme berechnen ld de,(x2bog) ; und auf Stack ablegen xor a sbc hl,de push hl ld de,(x4bog) ; Berechnung des 3. Gliedes ld bc,fc3 call divi pop de ; Zwischensumme im Stack add hl,de ; aktualisieren push hl ld de,(x6bog) ; Berechnung des 4. Gliedes ld bc,fc4 call divi pop de ; Zwischensumme im Stack ex de,hl ; aktualisieren xor a sbc hl,de push hl ld de,(x8bog) ; Berechnung des 5. Gliedes ld bc,fc5 call divi pop de ; Stack korrigieren add hl,de ; und Summe fertigstellen ; cx in reg hl berechnet ret end