# Ilk 12 Fibonacci sayisini hesaplar ve print ile yazdirir.
# Fibonacci hesabi: F[n+2] = F[n] + F[n+1]
      .data            # data kismi
fibs: .word   0 : 12   # "array" 12 adet word (32 bit tamsayi) 
                       # fib degeri saklar
size: .word  12        # "array" boyutu = 12 
      .text            # data kismi sonu
      la   t0, fibs    # array baslangiç adresini yükler 
      la   t5, size    # size degiskeni adresini yükler
      lw   t5, 0(t5)   # t5 = size degeridir. lw t5, 0(size) da olabilir
      li   t2, 1       # 1 ilk ve ikinci fib degeri 1dir      
      sw   t2, 0(t0)   # F[0] = 1 belle?e yazilir
      sw   t2, 4(t0)   # F[1] = 1 belle?e yazilir
      addi t1, t5, -2  # döngü t1 sifir olana dek (size-2 kez) dönecektir
loop: lw   t3, 0(t0)   # t3=F[n] deger bellekten çekilir
      lw   t4, 4(t0)   # t4=F[n+1] deger bellekten çekilir
      add  t2, t3, t4  # t2 = F[n+2] = F[n] + F[n+1]
      sw   t2, 8(t0)   # t2, yani F[n+2] bellege yazilir 
      addi t0, t0, 4   # Fib dizisinde bakilacak yer bir arttirilir (+4 byte)
      addi t1, t1, -1  # döngü degiskeni bir eksiltilir
      bgtz t1, loop    # bgtz (>=0 sahte kodu) t1 sifir olana dek demek
      la   a0, fibs    # print ilk parametre (array addresi)
      mv   a1, t5      # print ikinci parametre (size de?eri)
      jal  print       # print çagrilir. 
      j    exit        # exit sistem çagrisi a0=10
		
#########  print fonksiyonu (örnek). 
      .data
space:.ascii  " "     # sayilar arasina konacak bosluk
head: .ascii  "Fibonecci sayilarimiz\n"
      .text
print:mv   t0, a0      # array baslangic adresi
      mv   t1, a1      # döngü degiskeni = dizi boyutuna esitlenir
      li   a0, 1       # STDOUT = 1   
      la   a1, head    # head stringi yazdirmak için adresi a0a
      li   a2, 23      # string boyutu
      li   a7, 64      # string yazdirma sistem çagrisi a7=64
      ecall            # ekrana head stringini yazan servis

out:  lw   a0, 0(t0)   # siradaki fibonacci sayisi yazdirma için a0a
      li   a7, 1       # tamsayi yazdirma sistem çagrisi a7=1
      ecall            # ekrana fibonacci sayisini yazar

      li   a0, 1       # STDOUT = 1   
      la   a1, space   # head stringi yazdirmak için adresi a0a
      li   a2, 1       # string boyutu
      li   a7, 64      # string yazdirma sistem çagrisi a7=64
      ecall            # ekrana space stringini yazan servis

      addi t0, t0, 4   # dizinin bir sonraki elemani (+4 byte ileride)
      addi t1, t1, -1  # döngü degiskenin bir eksiltilir
      bgtz t1, out     # t1 sifir olana dek döner
      jr   ra          # fonksiyon dönüsü
	
exit: