الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

MIPS Cod - أسئلة

مغلقمُجاب
بدأه Ghada Othman في 30 مارس 2013 · 3 رد · 1,562 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله 


 


انا طالبة في جامعية في كلية الحاسبات و تقنية المعلومات 


 


تخصص هندسة برمجيات 


 


عندي مادة : تنظيم و بنيان الحاسب 


 


و محتاجة مساعدة في بعض الأسئلة عن MIPS cod


 


أتمنى تساعدوني في حلها


 


http://www.0zz0.com'>804696570.jpg


 


و يعطيكم العافية 


#2

بالنسبة للسؤال الأول، يفترض بعد تنفيذ البرنامج أن يحتوي المسجل $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
1
#3

Mr.B  يسلمو كتير و يعطيك العافيه 

 

 

بس عندي سؤال 

 

 

التعليمه :   bgez   

 

 

لأيش نستخدمها ؟؟

#4 أفضل إجابة

التعليمة bgez اختصار لـ"branch if greater than or equal to zero" وتستخدم لجعل البرنامج يقفز لمنطقة معينة إذا كان المسجل "أكبر أو يساوي الصفر". هنا:

bgez $t0, yes

سنتقل التنفيذ لـyes إذا كانت قيمة المسجل $t0 أكبر أو تساوي الصفر، تقريباً تشبه:

if( t0 >= 0 )    goto yes;yes:    // ...

في C.

1

هذا الموضوع مغلق.

مواضيع مشابهة