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

تمرين ياساده

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

10010100

ارید ان اوجد مکان اول '1' الموجود في المثال اعلاه من ناحيه اليمين علي سبيل المثال

منتظر الاجابه مشكورين

#2

السلام عليكم

فكرة الحل :

ناخذ مسجل مثلا bl ونضع به مكان البت التي نريد ان نسال عنها اذا كانت قيمتها 1

وعندما نجد 1 ننهي عملية البحث. حتى نحصل على بت واحدة يمكن استخدام احد اوامر الازاحة او الاستدارة (shl shr ror rol sal sar)

الحل التالي:صحيح حسب الشروط التالية:

1. القيمة المراد فحصها موجودة في المسجل al

2. في حالةاذا القيمة لا تحتوي على بت واحدة قيمتها 1 المسجل bl=-1

mov bl,0

mov cx,8

:start_chick

inc bl

ror al,1

jc end_chick

loop start_chick

mov bl,-1

:end_chick

#3

السلام عليكم

بصراحه اخ عفيف حاب اصحح شغله مش عارف

اذا كانت غلط عندك بس انا شايف بنظري انها غلط وارجوا اتأكد منها

وهي بدل ما نعمل

ror

ليش ما نعلم

rcr

وبعدين نفحص الكري فلاج ؟؟؟

ارجوا التاكد

وشكرا

#4

السلام عليكم

الى الاخ مؤيد ابو جابر يجوز استخدام ror او rcr وفي الحالتين نحصل على نفس الجواب ولكن هنالك حالة يمكن ان تدخل المستعمل الى دائرة الشك وهي كما يلي:

لنفرض اننا نريد ان نفحص المسجل al وان قيمة al=0 وان cf=1 اي ان هذه المعطيات كانت موجودة قبل عملية البحث بعد انهاء عملية البحث سوف نحصل على bl=-1 اي انه لم نجد اي بت قيمتها 1 . ولكن اذا نظرنا الى المسجل al سنجد ان قيمته كما يلي:

al=1=00000001

السؤال من اين هذه البت الاولى التي تساوي واحد ولماذا لم يتم اكتشافها .

الجواب:

هذه البت اصلها راية cf فقد كانت قبل عملية البحث cf=1 وعند استخدام الامر rcr يتم التعامل مع cf كانها البت الاولى وبتات المسجل al هي البت الثانية حتى البت التاسعة اي اننا نتعامل هنا مع 9 بتات وليس مع 8 بتات ففي الدورة الاولى تخرج قيمة cf وتذهب مكان البت الاخيرة في المسجل al أي البت التاسعة في المجموعة وتدخل البت الاولى من المسجل al الى cf

وبعد 8 دورات تكون البت الاولى في المسجل al هي قيمة الراية cf قبل عملية البحث

وعندما ينظر الطالب الى المسجل al يجد ان قيمته 1 وان المسجل bl=-1 اي انه لم يجد اي بت قيمتها 1 وربما يدخل الطالب هنا في مجال الشك. ولكن لو استخدمنا ror فلن تكون هذه المشكلة.

ارجو ان اكون قد قدمت الاجابة الكافية

وشكرا

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

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