; ; Programmodul 'XICALC' zur Aufbereitung von Daten ; fuer die anschliessende Berechnung von sin(x) / cos(x) ; ; IN reg de : Winkel x ; ; OUT var x1bog : Winkel in Bogenmass ; var x2bog : x1bog^2 ; var x4bog : x1bog^4 ; var x6bog : x1bog^6 ; var x8bog : x1bog^8 ; ; REG a,f,b,c,d,e,h,l ; extrn multi 2000 ram equ 2000h ; Festlegung des Variablenblocks 2000 x1bog equ ram ; im RAM 2002 x2bog equ x1bog + 2 2004 x4bog equ x2bog + 2 2006 x6bog equ x4bog + 2 2008 x8bog equ x6bog + 2 C910 pi2 equ 51472 ; Konstante pi2 := PI * 2^14 0000 7A ld a,d ; Reduktion des Winkels x auf 0001 E63F and 00111111b ; 0 <- x < 90 [Grad] 0003 57 ld d,a 0004 0110C9 ld bc,pi2 ; Umrechnung von x [Grad] 0007 CD0000 call multi ; in x1bog [Bogenmass] 000A CB14 rl h ; Division <de>:=<dehl>/2^14 000C CB13 rl e 000E CB12 rl d 0010 CB14 rl h 0012 CB13 rl e 0014 CB12 rl d 0016 ED530020 ld (x1bog),de ; Ergebnis in x1lbog abspeichern 001A 42 ld b,d ; x1bog quadrieren 001B 4B ld c,e 001C CD0000 call multi 001F ED530220 ld (x2bog),de ; Ergebnis in x2bog abspeichern 0023 42 ld b,d ; x2bog quadrieren 0024 4B ld c,e 0025 CD0000 call multi 0028 CB14 rl h ; Division <de>:=<dehl>/2^15 002A CB13 rl e 002C CB12 rl d 002E ED530420 ld (x4bog),de ; Ergebnis in x4bog abspeichern 0032 CD0000 call multi ; x2bog * x4bog berechnen 0035 CB14 rl h ; Division <de>:=<dehl >/2^15 0037 CB13 rl e 0039 CB12 rl d 003B ED530620 ld (x6bog),de ; Ergebnis in x6bog abspeichern 003F CD0000 call multi ; x2bog * x6bog berechnen 0042 ED530820 ld (x8bog),de ; Ergebnis in x8bog abspeichern ; alle xibog vorbereitet 0046 C9 ret
Bild 4. XICALC bereitet vor
|