متتالية فيبوناشي بلغة تجميع معالج ميبس
(Assembleur du processeur MIPS R 3000)
في هذه التدوينة سوف نقوم بإنجاز برنامج بلغة تجميع معالج ميبس للمتتتالية المشهورة متتالية فيبوناشي (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.
ليصلك
الجديد و تبقى دائما على إطلاع تابع مدونتنا و زر بأستمرار صفحاتنا على الفيس بوك : :الأستاذ
بن مير عبد القادر و baek-oasis
تعليقات
إرسال تعليق