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



Nessun commento:

Posta un commento

Change Detection with structural similarity

L'idea di base e' quella di cercare le differenze tra le due immagini sottostanti Non e' immediatamente visibile ma ci sono dei ...