برنامج حساب عدد أس عدد بلغة تجميع معالج ميبس
(Assembleur du processeur MIPS R 3000)
1. تقديم
في
هذه التدوينة سنقول بإنجاز برنامج بلغة تجميع معالج ميبس (Assembleur du processeur MIPS R 3000)، سنقدم أولا
الخوارزمية algorithme عدد أس عدد xn (puissance) حيث x و n عددين صحيحين ثم نقوم بتحويلها إلى
برنامج assembleur.
سنقوم في تدوينة أخرى بحساب الأس لعدد حقيقي
سنقوم في تدوينة أخرى بحساب الأس لعدد حقيقي
2. خوارزمية حساب الأس أو القوة
الخوارزمية algorithme التي تحسب عدد قوة عدد (الأس)
تقوم بتكرار ضرب العدد في نفسه n مرة لأن:
xn= x*x*….*x n مرة
// Puissance d'un nombre entier
Algorithme puissance;
var x, n, p, i : entier;
debut
ecrire
("Donner un nombre entier x "); lire(x);
ecrire
("Donner un nombre entier pour la puissance n "); lire(n);
p <- 1;
pour i <- 1 à
n faire
p <-
p*x;
finpour
ecrire("la puissance
est ", p);
fin.
3. برنامج حساب الأس بلغة تجميع ميبس
فيما
يلي برنامج يحسب عدد أس عدد xn (puissance) بلغة تجميع معالج ميبس (Assembleur du processeur MIPS R 3000) حيث x و n عددين صحيحين. سنضيف
هنا متغيرات نقوم يتخزين القيم المدخلة في الذاكرة المركزية مباشرة بعد الإدخال ثم
نقوم بتحميلها ( charger ) إلى السجلات (registres) فيما بعد وفيها و كذلك نخزن الأس الذي نحصل
عليه.
.data
x :
.word 0
n :
.word 0
p :
.word 0
m1: .asciiz "Donner un nombre entier x "
m2: .asciiz "Donner un nombre entier pour la
puissance n "
m3: .asciiz "la puissance est "
.text
main:
# lecture de la valeur de x
la
$a0,m1
li
$v0,4
syscall
li $v0,
5
syscall
# souvegarder la valeur de x en memoire centrale
sw $v0, x
# lecture de la valeur de n
la
$a0,m2
li
$v0,4
syscall
li $v0,
5
syscall
# souvegarder la valeur de n en memoire centrale
sw $v0, n
# $t2 contient le compteur de la boucle
li $t2, 1
# $t3 contient la valeur de la puissance
li $t3, 1
# charger la valeur de la variable x dans le registre $t0
lw $t0, x
# charger la valeur de la variable n dans le registre $t1
lw $t1, n
# boucle de calcul de la puissance
boucle : bgt $t2, $t1, exit
mul $t3, $t3, $t0
addi $t2, $t2, 1
j boucle
exit:
# souvegarder la valeur de la puissance en memoire
centrale
sw $t3, p
# Affichage de la puissance
la $a0,m3
li
$v0,4
syscall
move
$a0, $t3
li $v0, 1
syscall
# fin du programme
li $v0,
10
syscall
.end main
وهذا مثال على
تجريب البرنامج في QtSpim.
1.
نفذ البرنامج من أجل قيم موجبة و معدومة و سالبة هل يعطي نتائج صحيحة في كل الحالات
، إذا كان لا إقترح تعديلات من أجل أن يعطي عديلات حتى يعطي البرنامج قيما صحيحة من
أجل كل القيم
2.
عدل البرنامج حتى يحسب n عامليn! (factorielle)
3.
عدل البرنامج حتى يحسب:
Y = xn/n!
حيث
x و n عددين صحيحين.
قم بترك
أجوبتك و تعديلاتك على تعليق حتى يتكمن الجميع من فهم و تعديل البرنامج.
ليصلك الجديد و تبقى دائما على إطلاع تابع مدوتنا و زر صفحاتنا على الفيس بوك : :الأستاذ بن مير عبد القادر و baek-oasis
تعليقات
إرسال تعليق