-
دستورات منطقي
عبارتند از : And , or , xor , test , not و ... كه توسط اين دستورات عمليات منطقي روي هر يك از بيتهاي ثباتها , خانه هاي حافظه انجام ميشوند . با اين عمليات ميتوان برروي يك بيت يا گروهي از بيتهاي ثباتها يا خانه هاي حافظه عملياتي انجام داد و آنها را متناسب با كاربرد يك يا صفر نمود . به همين دليل گاها به اين دستورات دستورات عمليات روي بيتها نيز ميگويند .
اين دستورات روي بيتهاي پرچم cf , pf , sf , of , zf تاثير ميگذارند .
نكته براي صفر كردن يك عملوند ميتوان انرا با خودش xor نمود . در واقع دو دستور زير هر دو يك كار را انجام ميدهند :
توجه داشته باشيد كه دستور not بر بيتهاي پرچم اثري ندارد .
دستور xor براي مكمل كردن بيشتر به كار ميرود .
براي تست كردن عملوندي به صورت زير عمل ميكنيم
همانطور كه گفته شد دستورات منطقي جز or روي پرچم ها موثر هستند بنابراين براي انكه بهميم ايا ثبات dx سفر است يا نه از روش فوق استفاده كرديم .
دستورات شيفت :
توسط دستورات شيفت محتواي ثباتهاي پردازشگر يا خانه هاي حافظه يك يا چند بيت به طرف راست يا چپ شيفت داده ميشوند و دو نوع شيفت رياضي و منطقي وجود دارد .
شيفت به چپ : اين شيفت تفاوت چنداني در نوع منطقي و رياضي ان ندارد . و هر دو مانند يكديگر عمل ميكنند :
عملكرد اين شيفت به اين صورت است كه يك صفر به اولين بيت ( بيت صف ام بايت مورد نظر ) وارد ميشود و كليه بيتها همگي به سمت چپ منتقل ميشوند و اخرين بيت كه بيرون انداخته ميشود به cf ميرود .
بازاي هر شيفت بايت مذكور در دو ضرب ميشود : فرضا در رجيستر bl مقدار 3 را ريخته ايم :
دستور اول باعث ميشود عدد ما باندازه يك بايت به سمت چپ شيفت داده شود يعني عدد در دو ظرب شود .
اما دستور دوم رجيستر ax را 3 بار ( باندازه محتويات cl منتقل) ميكند . يعني اين دستور عدد مارا 3 بار در 2 ضرب ميكند و اين يعني عدد در 8 ضرب شده باشد .
صورت دستور شيفت به راست به صورت زير است :
کد:
Shl عملوند1 , عملوند 2
shl مخفف shift logical left ميباشد . عملوند اولي يا همان عملوند مقصد است كه حاصل عبارت منطقي فوق درون ان ريخته ميشود . عملوند دوم عملوند منبع است كه به تعداد ان عمليات شيفت رخ ميدهد .
براي دستور رياضي ان نيز كه براي اعداد علامت دار است از دستور sal استفاده ميكنيم كه مخفف shift arithmatic left ميباشد .
شيفت به راست :
دو نوع است يكي شيفت منطقي براي اعداد بدون علامت و ديگري شيفت رياضي براي اعداد علامت دار .
در شيفت منطقي براي اعداد بدون علامت ساختمان دستور مانند همانستكه در بالا در مورد شيفت به چپ توضيح داده شد منتهي به جاي shl از shr استفاده ميكنيم كه r مخفف right است
عملكرد ان به اين صورت است كه يك صفر از سمت چپ وارد بزرگترين بيت بايت مورد نظر ميشود و كليه بيتها به اندازه يك واحد به سمت راست حركت ( شيفت ) ميكنند و بيت اخري در cf ميرود .
اين عمل عدد مذكور را بر عدد 2 تقسيم ميكند . با اين تفاوت كه باقيمانده اي نخواهيم داشت .
اما تفاوت شيفت منطقي به چپ با شيفت رياضي به چپ انستكه در اين شيفت يعني شيفت منطقي علامت عدد مهم نيست و در هر صورت عدد فاقد علامت است . اما در اعداد علامت دار همانطور كه ميدانيم پرارزشترين بيت بيانگر علامت عدد است بنابراين در صورت كه بيتي از سمت چپ وارد بايت بشود بيت علامت در صورتي كه يك ميبود صفر خواهد شد بنابراين براي رفع اين مشكل از شيفت به چپ رياضي استفاده ميشود كه بيت ورودي را اگر عدد منفي باشد با مقدار يك وارد ميكند و در غير اينطورت مقدار صفر وارد ميكند .
به جاي shr از sar استفاده ميكنيم
به اين نكته توجه داشته باشيد كه اگر در تقسيم بر دو عدد 5 و 7 باشد يعني عددي فرد باشد حاصل به ترتيب 2 و 3 ميشود . حال انكه اگر همين اعداد منفي باشند يعني 5- و 7- باشند حاصل بترتيب 3- و 4- ميشود .
برچسب برای این موضوع
مجوز های ارسال و ویرایش
- شما نمی توانید موضوع جدید ارسال کنید
- شما نمی توانید به پست ها پاسخ دهید
- شما strong>نمی توانید فایل پیوست ضمیمه کنید
- شما نمی توانید پست های خود را ویرایش کنید
-
قوانین انجمن