Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; - - - - - - - - - - - - - - - - - -
- ; \/ \/ \/ 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 /\ /\ /\
- ; - - - - - - - - - - - - - - - - - -
Advertisement
Add Comment
Please, Sign In to add comment