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

الصفحات

برنامج حساب القاسم المشترك الأكبر لعددين بلغة تجميع معالج ميبس بطريقة إقليدس

برنامج حساب القاسم المشترك الأكبر لعددين بلغة تجميع معالج ميبس بطريقة إقليدس
 (Assembleur du processeur MIPS R 3



برنامج حساب القاسم المشترك الأكبر لعددين بلغة تجميع معالج ميبس بطريقة إقليدس



1. تقديم

في هذه التدوينة سنقول بإنجاز برنامج بلغة تجميع معالج ميبس (Assembleur du processeur MIPS R 3000)، سنقدم أولا الخوارزمية algorithme التي تحسب القاسم المشترك الأكبر لعددين بإستخدام خوارزمية إقليدس (algorithme d'Euclide) ثم نقوم بتحويلها إلى برنامج assembleur.

2. خوارزمية القاسم المشترك الأكبر لعددين بإستخدام خوارزمية إقليدس

الخوارزمية algorithme التي تحسب القاسم المشترك الأكبر بإستخدام خوارزمية إقليدس (algorithme d'Euclide)، خوارزمية إقليدس تقوم على أساس أن القاسم المشترك لعددين هو القاسم المشترك الأكبر للعدد الثاني و باقي قسمة الأول على الثاني بفرض أن الأول أكبر من الثاني . و نكرر العملية حتى يكون باقي القسمة يساوي الصفر. وهنا يكون العدد الأول هو القاسم المشترك الأكبر
لا بد أن يكون العددين صحيحين و موجبين.


//PGCD avec algorithme d'Euclide
Algorithme PGCD;
   var x, y, z : entier;
debut
           //boucle pour la lecture de x pour assurer que x est positif
     répéter
         ecrire('Donner un nombre positif :');
         lire(x);  
     jusqu'à x > 0;

          //boucle pour la lecture de y pour assurer que y est positif
     répéter
         ecrire('Donner un nombre positif :');
         lire(y);
     jusqu'à y > 0;

    //Permutation des valeurs nombres x et y si y > x
    si y > x alors
         Z <- x ;
         X <- y ;
         Y <- z ;
    finsi
         //boucle de recherche du PGCD
         tantque y != 0 faire
             //mod reste de la division entière
             z <- x mod y ;
             x <- y ;
             y <- z ;
         fintantque
         ecrire('la valeur PGCD est : ',x);
fin.

3. برنامج القاسم المشترك الأكبر لعددين بإستخدام خوارزمية إقليدس بلغة تجميع ميبس

فيما يلي برنامج القاسم المشترك الأكبر PGCD بلغة تجميع معالج ميبس (Assembleur du processeur MIPS R 3000) بإستخدام خوارزمية إقليدس (algorithme d'Euclide). سنضيف هنا متغيرات نقوم يتخزين القيم المدخلة في الذاكرة المركزية وفيها و كذلك قيمة القاسم المشترك الأكبر الذي نحصل عليه.

#variables declarations
.data
x : .word 0
y : .word 0
pgcd : .word 0

m1: .asciiz "Donner un nombre positif x  "
m2: .asciiz "Donner un nombre positif y  "
m3: .asciiz "PGCD =  "

.text
main:

#lecture de la valeur de x
readx : la $a0,m1
li $v0,4
syscall
li $v0, 5
syscall
blez $v0,readx
move $t0, $v0

# souvegarder la valeur de x en memoire centrale
sw $t0, x

#lecture de la valeur de y
ready : la $a0,m2
li $v0,4
syscall
li $v0, 5
syscall
blez $v0,ready
move $t1, $v0

# souvegarder la valeur de y en memoire centrale
sw $t1, y

#Permutation des nombres si x ($t0) < y ($t1)
bgt $t0, $t1 , gotopgcd
move $t2, $t0
move $t0, $t1
move $t1, $t2

gotopgcd:

#boucle de calcul du PGCD
boucle : beqz $t1, exit
div $t0, $t1
mfhi $t2
move $t0, $t1
move $t1, $t2
j boucle

exit:

# souvegarder la valeur de PGCD en memoire centrale
sw $t0, pgcd

#Affichage du PGCD
la $a0,m3
li $v0,4
syscall
move $a0, $t0
li $v0, 1
syscall

# fin du programme
li $v0, 10
syscall

.end main

واجهة برنامج QtSpim


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

تعليقات