بنية الشرط للأعداد الحقيقية في لغة تجميع معالج ميبس
(Assembleur du processeur MIPS R 3000)
1. تقديم
في
هذه التدوينة سنتطرق إلى الشرط condition FPU في لغة
تجميع معالج ميبس (Assembleur
du processeur MIPS R 3000)، و لشرح ذلك سنقوم بإنجاز
برنامج يحل معادلة من الدرجة الأولى ( Résolution d’une équation du premier degré). و كالعادة سنقدم أولا الخوارزمية algorithme ثم نقوم بتحويلها إلى
برنامج assembleur.
في
البرنامج بلغة تجميع معالج ميبس (Assembleur du processeur MIPS R 3000) سنقوم بالحل بطريقتين: الطريقة الأولى
نستخدم بها تعليمات الشرط الخاصة بالأعداد الصحيحة (Les opérations de Branchement : bgt, ble, …) و هنا
لا بد أن نحول الأعداد التي نريد إجراء الشرط عليها من float إلى word، أما الثانية فبإستخدام
تعليمات الشرط الخاصة ب float.
2. خوارزمية حل معادلة من الدرجة الأولى
الخوارزمية algorithme التي تحل معادلة من الدرجة الأولى ( Résolution d’une équation du premier degré).
Résolution d'une équation du premier degré
algorithme Eqd1;
var x,
a, b : reel;
debut
ecrire ("
Donner la valeur de a "); lire(a);
ecrire ("
Donner la valeur de b "); lire(b);
si a <>
alors
x <-
-b/;
ecrire(" la solution est ", x );
sinon
ecrire (" Pas de solution a = 0 ");
fin.
3. برنامج حل معادلة من الدرجة الأولى ببلغة تجميع ميبس
فيما
يلي برنامج يحل معادلة من الدرجة الأولى ( Résolution d’une équation
du premier degré).
1.3 حل المعادلة بإستخدام بنية شرط الأعداد الصحيحة
# Resolution d une equation du premier
degre
# x = -b/a si a != 0
.data
m1: .asciiz " Donner la valeur de a : "
m2: .asciiz " Donner la valeur de b : "
m3: .asciiz " la solution est "
m4: .asciiz " Pas de solution a = 0 "
msg : .asciiz " Program assembleur MIPS R 3000 de
resolution d une equation du premier degre \n"
.text
main:
# Presentation du programme
la $a0 , msg
li $v0 , 4
syscall
# lecture de la valeur de a
la $a0,m1
li $v0,4
syscall
li $v0,
6
syscall
mov.s
$f1, $f0
# lecture de la valeur de b
la $a0,m2
li $v0,4
syscall
li $v0,
6
syscall
mov.s
$f2, $f0
li.s $f3, 0.0
# convertir a en int
cvt.w.s $f5, $f1
mfc1 $t0, $f5
li $t1, 0
# Tester a = 0 ou non
beq $t0, $t1, non_sol
li.s $f3, -1.0
div.s $f4, $f2, $f3
div.s $f4, $f4, $f1
# Afficher message
la $a0,m3
li $v0,4
syscall
# Afficher la valeur de la solution x
mov.s
$f12, $f4
li $v0,
2
syscall
j fin
non_sol:
# Afficher message Pas de solution a = 0
la $a0,m4
li $v0,4
syscall
fin:
li $v0, 10
syscall
.end main
2.3 حل المعادلة بإستخدام بنية شرط الأعداد الحقيقية
#Comparison of FP values sets a
code in a special register
#c.eq.s $f2, $f4 if $f2 == $f4
then code = 1 else code = 0
#c.ne.s $f2, $f4 if $f2 != $f4
then code = 1 else code = 0
#c.le.s $f2, $f4 if $f2 <= $f4
then code = 1 else code = 0
#c.lt.s $f2, $f4 if $f2 < $f4
then code = 1 else code = 0
#c.ge.s $f2, $f4 if $f2 >= $f4
then code = 1 else code = 0
#c.gt.s $f2, $f4 if $f2 > $f4
then code = 1 else code = 0
#Branch instructions jump
depending on the value of the code
#bc1f label if code == 0 then jump
to label
#bc1t label if code == 1 then jump
to label
# Resolution d une equation du premier degre
# x = -b/a si a != 0
.data
m1: .asciiz " Donner la valeur de a : "
m2: .asciiz " Donner la valeur de b : "
m3: .asciiz " la solution est "
m4: .asciiz " Pas de solution a = 0 "
msg : .asciiz " Program assembleur MIPS R 3000 de
resolution d une equation du premier degre \n"
.text
main:
# Presentation du programme
la $a0 , msg
li $v0 , 4
syscall
# lecture de la valeur de a
la $a0,m1
li $v0,4
syscall
li $v0,
6
syscall
mov.s
$f1, $f0
# lecture de la valeur de b
la $a0,m2
li $v0,4
syscall
li $v0,
6
syscall
mov.s
$f2, $f0
li.s $f3, 0.0
# convertir a en int
#cvt.w.s $f5, $f1
#mfc1 $t0, $f5
#li $t1, 0
# Tester a = 0 ou non
#beq $t0, $t1, non_sol
c.eq.s $f1, $f3
bc1t non_sol
li.s $f3, -1.0
div.s $f4, $f2, $f3
div.s $f4, $f4, $f1
# Afficher message
la $a0,m3
li $v0,4
syscall
# Afficher la valeur de la solution x
mov.s
$f12, $f4
li $v0,
2
syscall
j fin
non_sol:
# Afficher message Pas de solution a = 0
la $a0,m4
li $v0,4
syscall
fin:
li $v0, 10
syscall
.end main
وهذا مثال على
تجريب البرنامج في QtSpim:
ليصلك
الجديد و تبقى دائما على إطلاع تابع مدونتنا و زر بإستمرار صفحاتنا على الفيس بوك : :الأستاذ
بن مير عبد القادر و baek-oasis.
تعليقات
إرسال تعليق