السلام عليكم و رحمة الله
انا طالبة في جامعية في كلية الحاسبات و تقنية المعلومات
تخصص هندسة برمجيات
عندي مادة : تنظيم و بنيان الحاسب
و محتاجة مساعدة في بعض الأسئلة عن MIPS cod
أتمنى تساعدوني في حلها
و يعطيكم العافية
السلام عليكم و رحمة الله
انا طالبة في جامعية في كلية الحاسبات و تقنية المعلومات
تخصص هندسة برمجيات
عندي مادة : تنظيم و بنيان الحاسب
و محتاجة مساعدة في بعض الأسئلة عن MIPS cod
أتمنى تساعدوني في حلها
و يعطيكم العافية
بالنسبة للسؤال الأول، يفترض بعد تنفيذ البرنامج أن يحتوي المسجل $s1 على 1 إذا كان a أكبر من b أو 0 إذا كانت b أكبر من a:
# a = $a0 | b = $a1 | n = $t0 | s = $s1
addi $a0, $0, 9 # a = 9, للتنقيح
addi $a1, $0, 5 # b = 5, للتنقيح
jal sub # sub()
bgez $t0, yes # if( n >= 0 ) { goto yes }
add $s1, $0, $0 # else { s = 0 }
j finish # exit
yes:
addi $s1, $0, 1 # s = 1
j finish # exit
sub:
sub $t0, $a0, $a1 # n = a - b
jr $ra # return
finish:
# emptyاستخدمت $0، هو نفسه مسجل الصفر $zero.السؤال الثاني هذا توضيح بسيط له، يمكنك فهمه وكتابة تعليقك الخاص:
add $t0, $zero, $zero # t0 = 0
loop:
beq $a1, $zero, finish # if(a1 == 0) { goto finish }
add $t0, $t0, $a0 # else { $t0 = $t0 + $a0
addi $a1, $a1, -1 # $a1 = $a1 - 1
j loop # goto loop }
finish:
addi $t0, $t0, 50 # $t0 = $t0 + 50
add $s0, $t0, $zero # $s0 = $t0 + 0هناك خطأ في السؤال في التعليمة:sub $a1, $a1, 1هذا السطر يفترض أن ينقص 1 من المسجل $a1 الا أن هذه الصيغة خطأ، صيغة sub:
sub مسجل, مسجل, مسجلولايمكن استخدام ثابت، الا مع صيغ immediate المنتهية بـi مثل addi وغيرها. لكن لاتوجد في mips تعليمة subi. الحل الوحيد استخدام addi مع عدد سالب (جمع السالب هو نفسه الطرح):
addi $a1, $a1, -1
Mr.B يسلمو كتير و يعطيك العافيه
بس عندي سؤال
التعليمه : bgez
لأيش نستخدمها ؟؟
التعليمة bgez اختصار لـ"branch if greater than or equal to zero" وتستخدم لجعل البرنامج يقفز لمنطقة معينة إذا كان المسجل "أكبر أو يساوي الصفر". هنا:
bgez $t0, yes
سنتقل التنفيذ لـyes إذا كانت قيمة المسجل $t0 أكبر أو تساوي الصفر، تقريباً تشبه:
if( t0 >= 0 ) goto yes;yes: // ...
في C.
هذا الموضوع مغلق.