برنامج حساب القاسم المشترك الأكبر لعددين بلغة
تجميع معالج ميبس
(Assembleur du
processeur MIPS R 3000)
1. تقديم
في
هذه التدوينة سنقول بإنجاز برنامج بلغة تجميع معالج ميبس (Assembleur du processeur MIPS R 3000)، سنقدم أولا الخوارزمية algorithme التي تحسب القاسم المشترك الأكبر
لعددين بطريقة القسمة ثم نقوم بتحويلها إلى برنامج assembleur.
2. خوارزمية حساب القاسم المشترك الأكبر
الخوارزمية algorithme التي تحسب القاسم المشترك الأكبر لعددين
بطريقة القسمة: لحساب القاسم المشترك الأكبر بالطرح نقوم كل مرة بطرح العدد الأكبر
من العدد الأصغر حتى يتساوى العددان، و عندها أحدهما هو الذي يمثل القاسم المشترك
الأكبرPGCD.
لا
بد أن يكون العددان صحيحان موجبان.
حتى
لا نعقد الخوارزمية و البرنامج فإننا لا نفترض أن العددين موجبين.
//PGCD avec soustraction
Algorithme PGCD;
var x,y : entier;
debut
ecrire('Donner un nombre positif :');
lire(x);
ecrire('Donner un nombre positif :');
lire(y);
tantque x!=
y faire
si x > y alors
x <- x-y
sinon
y <- y-x;
finsi
fintantque
ecrire('le
PGCD est : ',x);
fin.
3. برنامج القاسم المشترك الأكبر بلغة تجميع معالج ميبس
فيما
يلي برنامج القاسم المشترك الأكبر PGCD بلغة تجميع معالج ميبس (Assembleur du processeur MIPS R 3000)
.data
m1: .asciiz "Donner un nombre positif x "
m2: .asciiz "Donner un
nombre positif y "
m3:
.asciiz "PGCD = "
.text
main:
#read x
la $a0,m1
li $v0,4
syscall
li
$v0, 5
syscall
move
$t0, $v0
#read y
la $a0,m2
li $v0,4
syscall
li
$v0, 5
syscall
move
$t1, $v0
#boucle de calcul du PGCD
boucle : beq $t0, $t1, exit
bgt $t0, $t1, next
sub $t1, $t1, $t0
j boucle
next: sub $t0, $t0, $t1
j boucle
exit:
#Affichage du PGCD
la $a0,m3
li
$v0,4
syscall
move
$a0, $t0
li
$v0, 1
syscall
li $v0, 10
syscall
.end main
4. خوارزمية حساب القاسم المشترك الأكبر معدلة
من
أجل أن يصبح برنامجنا أكثر فاعلية لا بد أن نتأكد أولا من العددين موجبين قبل أن
نبدأ البحث عن القاسم المشترك الأكبر، فلا بد أن نقوم بطلب إدخال العدد حتى يكون
موجبا سنبدأ أولا بالخوارزمية:
//PGCD avec
soustraction
Algorithme
PGCD;
var x,y : entier;
debut
répéter
ecrire('Donner un nombre positif :');
lire(x);
jusqu'à x > 0;
répéter
ecrire('Donner un nombre positif :');
lire(y);
jusqu'à y > 0;
tantque x!= y faire
si x > y alors
x <-
x-y
sinon
y <-
y-x;
finsi
fintantque
ecrire('le PGCD est : ',x);
fin.
5. برنامج القاسم المشترك الأكبر بلغة تجميع معالج ميبس معدل
أما برنامج القاسم المشترك الأكبر PGCD بلغة تجميع معالج ميبس (Assembleur du processeur MIPS R 3000) فيصبح
كما يلي:
.data
m1: .asciiz "Donner un nombre positif x "
m2: .asciiz
"Donner un nombre positif y "
m3: .asciiz "PGCD =
"
.text
main:
#read x
readx : la
$a0,m1
li $v0,4
syscall
li $v0, 5
syscall
blez $v0,readx
move $t0, $v0
#read y
ready : la $a0,m2
li $v0,4
syscall
li $v0, 5
syscall
blez $v0,ready
move $t1, $v0
#boucle de
calcul du PGCD
boucle : beq $t0, $t1, exit
bgt $t0,
$t1, next
sub $t1,
$t1, $t0
j boucle
next: sub
$t0, $t0, $t1
j boucle
exit:
#Affichage
du PGCD
la $a0,m3
li $v0,4
syscall
move $a0, $t0
li $v0, 1
syscall
li $v0, 10
syscall
.end main
ليصلك
الجديد و تبقى دائما على إطلاع تابع صفحاتنا على الفيس بوك :الأستاذ بن مير عبد القادر و baek-oasis
تعليقات
إرسال تعليق