ايران ويج

نسخه‌ی کامل: دستورات چرخشی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با تشکر از سایت خوبتون.
اگر میشه یک توضیح کلی درباره دستورات چرخشی در اسمبلی بدهید.
در رجیسترها شما به طور مستقیم فقط به 16 بیت دسترسی دارین و 16 بیت دیگه به صورت Carry bit میباشد
برای دسترسی به این Carry bit ها یا بیتهای 15-31 شما باید با استفاده از توابع چرخش مثل ROR چرخش به راست و ROL چرخش به چپ جای بیتهای اصلی را با بیتهای Carry عوض کنید

شدیدا به شما توصیه میکنم کتاب اموزش اسمبلی تالیق استاد نصیری رو مطالعه کنین
سلام:
دستورات چرخش رشته های بيتی را به صورت دايره ای حرکت می دهد اين دستورات مشابه شيفت عمل می کنند با اين تفاوت که بيتی که از يک طرف از داده خارج می شود به طور دوار از جهت ديگر وارد آن می شود. پردازنده 8086 چهار دستورالعمل چرخش (rol ، ror ، rcl و rcr) دارد.

ROL
دستورالعمل (rotate left) rol بيت های عملوند خود را به سمت چپ چرخش می دهد. فرم کلی آن به صورت زير است:
کد:
rol dest, count
دستورالعمل rol بيت های عملوند مقصد خود را به تعداد count به سمت چپ چرخش می دهد. بيتی که از سمت چپ خارج می شود از سمت راست وارد عملوند می شود.با ارزش ترين بيت عدد در فلگ carry کپی می شود.

عملوند اول عملوند مقصد است و عملوند دوم تعداد شيفت ها را مشخص می کند و می تواند عدد 1 يا برای تعداد بيشتر ثبات CL باشد. نوشتن عدد فوری بيشتر از 1 مستقيما در دستور غير مجاز است.
دستورالعمل rol به شکل های زير می تواند استفاده شود:
کد:
rol register, 1
rol memory, 1
rol register, CL
rol memory, CL

ROR
دستورالعمل (rotate right) ror بيت های عملوند خود را به سمت راست چرخش می دهد. فرم کلی آن به صورت زير است:
کد:
ror dest, count
دستورالعمل ror بيت های عملوند مقصد خود را به تعداد count به سمت راست چرخش می دهد. بيتی که از سمت راست خارج می شود از سمت چپ وارد عملوند می شود.
مشابه دستورالعمل rol عملوند دستورالعمل ror می تواند ثبات يا حافظه باشد. تعداد چرخش عدد 1 يا ثبات CL است.
کم ارزش ترين بيت عملوند وارد فلگ carry می شود. بقيه فلگ ها مشابه دستورالعمل rol تاثير می پذيرند.

RCL
دستورالعمل (rotate through carry left) rcl همانطور که از نامش پيدا است، بيت ها را از طريق فلگ carry به سمت چپ می چرخاند. شکل کلی آن به صورت زير است:
کد:
rcl dest, count
دستورالعمل rcl محتوای فلگ Carry را از سمت راست وارد عملوند مقصد می کند، سپس بيت های عملوند را به سمت چپ شيفت می دهد و آخرين بيت سمت چپ را وارد فلگ Carry می شود.
دستورالعمل rcl مشابه rol استفاده می شود و روی فلگ ها تاثير می گذارد.

RCR
دستورالعمل (rotate through carry right) rcr بيت های داده را از طريق فلگ carry به سمت راست می چرخاند. شکل کلی آن به صورت زير است:

کد:
rcr dest, count
دستورالعمل rcr محتوای فلگ Carry را از سمت چپ وارد عملوند مقصد می کند، سپس بيت های عملوند را به سمت راست شيفت می دهد و آخرين بيت سمت راست را وارد فلگ Carry می شود.
دستورالعمل rcr مشابه ror استفاده می شود و روی فلگ ها تاثير می گذارد.