Assembly Collection : 3 Menampilkan n Bilangan Fibonacci dengan Assembly SPIM

Last Updated on 14 years by Mas Herdi

Keadaan semakin memanas kawan, kali ini kita diharuskan untuk bisa menampilkan sejumlah n bilangan Fibonacci, tapi jangan takut kami di TWOH Engineering selalu punya solusi untuk mengatasi semua masalah. 🙂

Saya hampir lupa dengan pelajaran Pemrograman Komputer yang sudah saya pelajari di Semester satu. Siklus program hanya mulai dari menerima input, memproses input, menampilkan output, dan final state atau kondisi akhir. Contohnya, pada kasus ini kita akan menerima inputan berupa sebuah angka, katakanlah 8, maka output yang akan dikeluarkan adalah:

1 1 2 3 5 8 13

Tepat 8 deret bilangan Fibonacci.

Screenshot Progam Menampilkan Bilangan Fibonacci

Seperti biasa, inilah kodenya, simpan dengan file apapunitu.asm

.data
teks1:.asciiz "Masukkan nilai : "
teks2:.asciiz " "
.text
.globl main
main :
    la $a0, teks1  #load teks1 ke a0
    li $v0, 4      #isi v0 dengan 4
    syscall        #print String

    li $v0, 5        #isi v0 dengan 5
    syscall          #baca integer
    move $t0, $v0    #pindahkan integer yang dibaca ke t0

    li $t1, 1        #load immediate, t1 dengan 1
    li $t2, 1        #load immediate, t2 dengan 1
    li $t3, 2        #load immediate t3 dengan 2

    move $a0, $t1    #pindahkan t1 ke a0
    li $v0, 1        #isi v0 dengan 1
    syscall          #cetak t1/angka 1

    la $a0, teks2    #load teks2 ke a0
    li $v0, 4        #isi v0 dengan 4
    syscall          #cetak teks2

    beq $t0, $t3, dua        #cek apakan t0 == t3(2), jump ke dua
    slt $t4, $t3, $t0        #jika t3 kurang dari t0, t4 diisi 1
    beq $t4, $zero, elsef    #jika t4 isinya 0, jump ke elsef

    move $a0, $t1    #pindahkan t1 ke a0
    li $v0, 1        #isi v0 dengan 1
    syscall          #cetak t1/angka 1

    la $a0, teks2    #pindahkan teks2 ke a0
    li $v0, 4        #isi v0 dengan 4
    syscall          #cetak teks2

    addi $t5, $zero, 1   #add immediate, t5 = t5 + 1
    sub $t3, $t3, 1      #pengurangan, t3 = t3 - 1
    sub $t6, $t0, $t3    #pengurangan, t6 = t0 – t3
predicate :
    slt $t7, $t5, $t6        #jika t5 < t6, t7 berisi satu
    beq $t7, $zero, endfor   #jika t7 == 0, jump ke endfor
    add $t3, $t1, $t2        #tambahkan, t3 = t1 + t2
    move $t1, $t2            #assign t1 = t2
    move $t2, $t3            #assign t2 = t3

    move $a0, $t3          #pindahkan t3 ke a0
    li $v0,1               #isi v0 dengan 1
    syscall                #cetak integer t3

    la $a0, teks2          #isi a0 dengan teks2
    li $v0, 4              #isi v0 dengan 4
    syscall                #cetak string teks2

    addi $t5, $t5, 1       #add immediate t5 = t5 + 1
    j predicate            #lompat ke predicate<loop>

dua:
        move $a0, $t1     #pindahkan t1 ke a0
        li $v0, 1         #load immediate v0 dengan 1
        syscall           #cetak integer t1
        j exit            #jump ke exit

elsef :
endfor :
    j exit                #jump ke exit
exit :
        jr$ra            #jump dan return ke return addr.

Wow, dan kita punya saingan! Inilah apapunitu.java (maksudku : Fibonacci.java)

import static java.lang.System.out;
import java.util.Scanner;
class Fibonacci{

    public static void main(String... args)
    {
        Scanner s = new Scanner(System.in);
        int a = 0;
        int temp = 0;
        int b = 0;
        int c = 0;
        out.println("Masukkan angka");
        c = s.nextInt();
        a = 1;
        b = 1;
        out.print(a + " ");    
        if (c == 2)
        {
            out.print(a);
        }
        else if (c > 2)
        {
            out.print(b + " ");
            for(int i = 1; i <= c-2; i ++)
            {
                temp = a + b;
                a = b;
                b = temp;
                out.print(temp + " ");
            }
        }
    }
}




Download aplikasi kami di Google Play Store


Tutorial Menarik Lainnya :

TWOH&Co.