السلام عليكم ورحمة لله وبركاته
حاولت يا اخون حل هذا المثال (الموجود في احد الكتب)بشكل مفصل حتى اتمكن من فهم الطريقه بشكل افضل
فالمثال يقوم بعكس القيمه من 11011100 الى 00111011
وهذا هو المثال :
أكتب جزء من برنامج يقوم بعكس الخانات الموجودة في المسجل AL ووضع النتيجة في المسجل DL فمثلاً إذا كانت محتويات المسجل AL
هي الرقم الثاني 11011100 يتم وضع الرقم 00111011 في المسجل BL.
الحل :
يتم استخدام الأمر SHL حيث يتم وضع الخانة ذات الوزن الأكبر في بيرق المحمول وبعدها مباشرة يتم استخدام الأمر RCR لوضعها في
الخانة ذات الوزن الأعلى في المسجل BL وتكرار هذه العملية عدد 8 مرات. كما في الجزء التالي
MOV CX, 8
Reverse: SHL AL,1
RCR BL,1
Loop Reverse
MOV AL , BL
فقمت بتفصيل الحل بحيث كتبت القيمه الاساسية وهي
11011100
طبعا اعرف ان CX عباره عن عداد يحسب عدد الخانات المحوله
SHL AL,1
تعطينا النتجه
10111000
الان يصبح CF بواحد
اخرجنا اول خانه من اليسار
وادخلنا صفر من اليمين
RCRثم نقوم بعمليه على القيمه السابقه 10111000
وتصبح
11011100
بحيث اخرجنا من جهة اليمين اول خانه وادخلنا CF والذي يحتوي على الرقم واحد
ومع تكرار ذلك اكثر من مره وجدت النتيجه واحده !!!!!
ولم يكن هناك اي تغير
ارجوا مساعدتي لتوضيح الفكره بشكل صحيح