Benutzer:Mstma/fibonacci

Aus C64-Wiki
Zur Navigation springenZur Suche springen

Diese Programm demonstriert die Berechnung der Fibonacii-Zahlenfolge in Assembler und zeigt dabei die Addition die Ausgabe von 16-Bit-Zahlen.

Quelltext[Bearbeiten | Quelltext bearbeiten]

Das Programm muss zuerst mit ACME übersetzt werden. Dies geschieht mit dem Aufruf acme [QUELLDATEI]. Das übersetzte Programm wird dann auf dem C64 mit LOAD "FIB", 8, 1 geladen und SYS 49152 gestartet.

   !to "fib", cbm
   *= $c000
 
   axout  = $bdcd  ; lowbyte in X, highbyte in A
   chrout = $ffd2
 
   jmp start
 
 newline
   lda #13  ; CR
   jsr chrout
   rts
 
 start
   lda #0   ; x = 0
   sta x
   sta x + 1
   lda #1   ; y = 1
   sta y
   lda #0
   sta y + 1
 
 loop
   ldx x    ; x ausgeben
   lda x + 1
   jsr axout
   jsr newline
 
   clc      ; z = x + y
   lda x
   adc y
   sta z
   lda x + 1
   adc y + 1
   bcs end  ; z > 65535 bwz. highbyte > 255 (carry set)
   sta z + 1
 
   lda y    ; x = y
   sta x
   lda y + 1
   sta x + 1
   lda z    ; y = z
   sta y
   lda z + 1
   sta y + 1
   jmp loop
 
 end
   ldx y    ; letzten Wert der Zahlenfolge ausgeben, da die
            ; Ausgabe vor der Addition erfolgt
   lda y + 1
   jsr axout
   jsr newline
   rts
 
 ; Variablen (lowbyte, highbyte)
 x
   !wo 0
 y
   !wo 0
 z
   !wo 0

Die 16-Bit-Addition und -Ausgabe sind sind bereits im Wiki in der Beschreibung zum Befehl ADC_$hhll erklärt worden. Für die Ausgabe des Zeilenumbruchs wird die Routine CHROUT verwendet.

Ausgabe[Bearbeiten | Quelltext bearbeiten]

Mit dem Wertebereich, der sich mit 16 Bit darstellen lässt (0 bis 65535), können die ersten 24 Durchläufe der Fibonacci-Zahlenfolge berechnet werden.

0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368


Weblinks[Bearbeiten | Quelltext bearbeiten]

Wikipedia: Fibonacci-Folge