10010100
ارید ان اوجد مکان اول '1' الموجود في المثال اعلاه من ناحيه اليمين علي سبيل المثال
منتظر الاجابه مشكورين
10010100
ارید ان اوجد مکان اول '1' الموجود في المثال اعلاه من ناحيه اليمين علي سبيل المثال
منتظر الاجابه مشكورين
السلام عليكم
فكرة الحل :
ناخذ مسجل مثلا 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
السلام عليكم
بصراحه اخ عفيف حاب اصحح شغله مش عارف
اذا كانت غلط عندك بس انا شايف بنظري انها غلط وارجوا اتأكد منها
وهي بدل ما نعمل
ror
ليش ما نعلم
rcr
وبعدين نفحص الكري فلاج ؟؟؟
ارجوا التاكد
وشكرا
السلام عليكم
الى الاخ مؤيد ابو جابر يجوز استخدام 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 فلن تكون هذه المشكلة.
ارجو ان اكون قد قدمت الاجابة الكافية
وشكرا
هذا الموضوع مغلق.