; - - - - - - - - - - - - - - - - - - ; \/ \/ \/ NICHT GEFORDERT \/ \/ \/ .include "m16def.inc" .cseg .org $000 jmp init ; /\ /\ /\ NICHT GEFORDERT /\ /\ /\ ; - - - - - - - - - - - - - - - - - - .cseg ;Codesegment .org $002 ;Code beginnt bei Adresse $002 jmp init init_data: ldi PREV, 1 ldi PREPREV, 0 ldi CNT, 8 call fibon_iter ;Unterprogramm wird aufgerufen (Rueckgabe: PREPREV) END: rjmp END ; Teilaufgabe 10.2 b) ; ========================== ; ;SUBROUTINE fib_iter ; Errechnet die Fibonacci-Zahl .def PREV = R16 ;Parameter prev .def PREPREV = R17 ;Parameter preprev (spaeter auch Rueckgabewert) .def CNT = R18 ;Parameter count .def TEMP = R19 ;Zwischenspeicher fibon_iter: tst CNT ;falls count = 0, ... breq fib_end ; ... gehe zu "zero" mov TEMP, PREV ;prev zwischenspeichern add PREV, PREPREV ;prev = prev + preprev mov PREPREV, TEMP ;preprev auf zwischengespeicherten Wert von prev setzen dec CNT ;count-1 call fibon_iter ;fib_iter(prev+preprev, prev, count-1) rjmp fib_end ; Ende fib_end: ret ; - - - - - - - - - - - - - - - - - - ; \/ \/ \/ NICHT GEFORDERT \/ \/ \/ init: ldi R16,LOW(RAMEND) out SPL,R16 ldi R17,HIGH(RAMEND) out SPH,R17 jmp init_data ; /\ /\ /\ NICHT GEFORDERT /\ /\ /\ ; - - - - - - - - - - - - - - - - - -