venerdì 8 giugno 2018

Serie di Fibonacci in Assembler C64

Il Commodore 64 e' stato il mio primo calcolatore e non sono mai riuscito ad imparare a programmare in Assembler...anche perche' all'epoca non esisteva Internet e se non avevi un amico "istruito" non andavi da nessuna parte....sto cercando di colmare la lacuna adesso a distanza di oltre trenta anni

Inizio con una cosa facile...ovvero la serie di Fibonacci limitata ai numeri sotto a 255 (la bellezza dei calcolatori 8bit)



il codice e' molto semplice
----------------------------------------------------
processor 6502
org $1000
       ; clear carry flag...leggendo in alcuni posti sembra che non sia obbligatorio
       ; settare a zero il flag di carry perche' viene fatto in automatico da adc
clc
torna
         ; mette nell'accumulatore il valore della variabile byte uno
         lda uno
         ; somma l'accumulatore con la variabile due
         adc due
         ; metti il risultato in somma
         sta somma
         ; se si ha un overflow la flag di carry e' a 1 ed esce
         bcs esci
        ; altrimenti scambia il contenuto delle variabili  per il prossimo calcolo
         lda due
         sta uno
         lda somma
         sta due

        ; qui chiama una funzione che stampa a video il valore di un numero a 16 bit
        ; nell'accumulatore viene messo il byte piu' significativo ,ma qui e' sempre a zero
lda #$00
ldx somma
JSR $BDCD
       
        ; funzione che stampa uno spazio a video
JSR $AB3F

         jmp torna
esci
         rts
uno
         .byte $01
due
         .byte $01
somma
         .byte $00

------------------------------------------------------

Per compilare il codice ho usato Dasm

/dasm.Linux.x86 fib2.asm -ofib2.prg

per eseguire il codice si compila Vice e si lancia

x64 fib2.prg

digitando poi

SYS 4096