حساب عدد العناصر السالبة و المعدومة و الموجبة في جدول بلغة تجميع معالج ميبس
(Assembleur du processeur MIPS R 3000)
1. تقديم
في
هذه التدوينة سنتطرق إلى التعامل مع عناصر الجداول les
tableaux في لغة تجميع معالج ميبس (Assembleur du processeur MIPS R 3000) بعدما رأينا في التدوينة السابقة برنامج يقرأ و يعرض عناصر جدول. للتبسيط سوف لن نقوم بقراءة عناصر الجدول و لكن نقوم بإعطائها في التصريح.
و كالعادة سنقدم
أولا الخوارزمية algorithme ثم نقوم بتحويلها إلى
برنامج assembleur.
2. خوارزمية حساب عدد العناصر السالبة و المعدومة و الموجبة في جدول
هذه هي الخوارزمية التي تقوم بحساب عدد السالبة و المعدومة و الموجبة في جدول ، في هذه الخوارزمية لا نقوم بقراءة عناصر الجدول و لكن نقوم بملأ الجدول بقيم مباشرة عند التصريح بمتغير الجدول، طبعا هذا من أجل التبسيط، يمكن بكل سهولة القيام بعملية قراءة العناصر أولا كما فعلنا في هذا الموضوع المعنون قراءة و عرض عناصر جدول بلغة تجميع معالج ميبس.
algorithme tab_n_n_p;
var t : tableau[0 , -2 , 1 , 5 , -3 , 0 , 3 , 5 , -6 , 9] entier;
i , nneg , nnul , npos : entier ;
debut
nneg <- 0 ;
nnul <- 0 ;
npos <- 0 ;
pour i <- 1 à 10 faire
si (t[i] < 0)
nneg <- nneg + 1 ;
sinon
si (t[i] = 0)
nnul
<- nnul + 1 ;
sinon
npos <- npos + 1 ;
fin pour
ecrire(' Le
nombre des elements negatifs = ' , nneg);
ecrire(' Le
nombre des elements negatifs = ' , nnul);
ecrire(' Le
nombre des elements negatifs = ' , npos);
fin.
3. برنامج حساب عدد العناصر السالبة و المعدومة و الموجبة في جدول بلغة تجميع المعالج ميبس
فيما
يلي البرنامج الذي
يقرأ و يعرض عناصر جدول بلغة تجميع معالج ميبس (Assembleur du processeur MIPS R 3000).
# Programme de calcul de nombre des elements negatifs , nulles et positifs
d'un tableau de dix elements
.data
tab : .word
0 , -2 , 1 , 5 , -3 , 0 , 3 , 5 , -6 , 9
m1 : .asciiz
" Le nombre des elements negatifs = "
m2 : .asciiz
" \n Le nombre des elements nulles = "
m3 : .asciiz
" \n Le nombre des elements positifs = "
.text
main :
li $t0 , 0 # compteur des elements negatifs
li $t1 , 0 # compteur des elements nulles
li $t2 ,
0 # compteur des elements positifs
li $a1 ,
10 # taille
la $a2 , tab
# $a2 recoit l adresse du premier element
bcl :
lw $a3 , ($a2) # lire une valeur du tableau
bgez $a3 ,
pos_nulle
#
incrementer le nombre des elements negatifs
addi $t0 , 1
j next
pos_nulle :
bgtz $a3 , pos
#
incrementer le nombre des elements nulles
addi $t1 , 1
j next
pos :
#
incrementer le nombre des elements positifs
addi $t2 , 1
next :
addi $a2 ,
4 # incrementer le pointeur du tableau
par 4
addi $a1 ,
-1 # decrementer le compteur de la boucle bcl
bne $a1 ,
$zero , bcl # si la valeur n est pas nulle brancher sur bcl
# Affichage
du nombre des elements negatifs
la $a0 , m1
li $v0 , 4
syscall
move $a0 ,
$t0
li $v0 , 1
syscall
# Affichage
du nombre des elements nulles
la $a0 , m2
li $v0 , 4
syscall
move $a0 ,
$t1
li $v0 , 1
syscall
# Affichage
du nombre des elements positifs
la $a0 , m3
li $v0 , 4
syscall
move $a0 ,
$t2
li $v0 , 1
syscall
# fin du
programme
li $v0 , 10
syscall
وهذا مثال على تجريب البرنامج في QtSpim
ليصلك
الجديد و تبقى دائما على إطلاع تابع مدونتنا و زر بإستمرار صفحاتنا على الفيس بوك : :الأستاذ
بن مير عبد القادر و baek-oasis
تعليقات
إرسال تعليق