القائمة الرئيسية

الصفحات

متتالية فيبوناشي بلغة تجميع معالج ميبس

متتالية فيبوناشي بلغة تجميع معالج ميبس
 (Assembleur du processeur MIPS R 3000)


متتالية فيبوناشي بلغة تجميع معالج ميبس

1. تقديم

في هذه التدوينة سوف نقوم بإنجاز برنامج بلغة تجميع معالج ميبس للمتتتالية المشهورة متتالية فيبوناشي (suite de Bibonacci). و متتالية فيبوناشي  تعرف رياضيا بأن الحدين الأولين هما 1 و 1 و يحسب كل حد من متتالية فيبوناشي بأنه ناتج جمع الحدين السابقين، فتعطينا مثلا سلسلة الأعداد التالية:
1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 89 , 144
هناك من يضع الحدين الأولين  0 و 1.
سنقوم فيما يلي بإعطاء الخوارزمية (algorithme  و البرنامج

2. خوارزمية متتالية فيبوناشي

فيما يلي الخوارزمية التي تحسب حدود سلسلة فيبوناشي


algorithme fibonacci;
var i , n , t1 , t2 , t : entier;
bebut
ecrire (" Donner le nombre des termes : "); lire(n);
t1 <- 0;
t2 <- 1;
ecrire (" les termes de la serie sont : ");
pour i <- 1 à n faire
     t <- t1 + t2 ;
     ecrire ( t , " , ");
     t1 <- t2;
     t2 <- t;

fin pour

fin.

3. برنامج متتالية فيبوناشي بلغة تجميع معالج ميبس 

فيما يلي تحويل خوارزمية متتالية فيبوناشي إلى برنامج بلغة معالج ميبس.

# Program assembleur MIPS R 3000 qui trouve les termes de la suite de Fibonnaci

.data

m1 : .asciiz " Donner la valeur du nombre des termes : "
m2 : .asciiz " les termes de la serie sont :   "
mvir : .asciiz " ,  "
msg : .asciiz " Program assembleur MIPS R 3000 qui trouve les termes de la suite de Fibonnaci \n"
.text
main:
# Presentation du programme
la $a0 , msg
li $v0 , 4
syscall

# lecture de la valeur du nombre des termes
la $a0 , m1
li $v0 , 4
syscall
li $v0 , 5
syscall

# la valeur de n dans le registre $t0
move $t0 , $v0

# Le premier terme T1 = 1 dans le registre $t1
li $t1 , 1

# Le deuxieme terme T2 = 1 dans le registre $t2
li $t2 , 1

# Le compteur  des termes dans le registre $t3
li $t3 , 1

# Afficher message les termes de la serie sont :
la $a0 , m2
li $v0 , 4
syscall

# Affichage du premier terme
move $a0 , $t1
li $v0 , 1
syscall

# Affichage la virgule
la $a0 , mvir
li $v0 , 4
syscall

# Affichage du deuxieme terme
move $a0 , $t2
li $v0 , 1
syscall

# Affichage la virgule
la $a0 , mvir
li $v0 , 4
syscall

boucle:
# si $t3 > $t0 fin de calcul des termes , on sort de la boucle
bgt $t3 , $t0 , fin

# calcul la valeur du terme
add $t4 , $t1 , $t2

# Affichage du terme calculer
move $a0 , $t4
li $v0 , 1
syscall

# Affichage la virgule
la $a0 , mvir
li $v0 , 4
syscall

# changement des valeurs t1 <- t2 , t2 <- t pour la calculer le terme suivant
move $t1 , $t2
move $t2 , $t4

# incrementer le compteur
addi $t3 , 1

j boucle


fin:

# fin du program
li $v0 , 10
syscall

.end main

وهذا مثال على تجريب البرنامج في QtSpim.

Exemple d'execution du programme MIPS R 3000 suite de Fibonacci

ليصلك الجديد و تبقى دائما على إطلاع تابع مدونتنا و زر بأستمرار صفحاتنا على الفيس بوك : :الأستاذ بن مير عبد القادر و baek-oasis



تعليقات