ثبات پرچم های ریزپردازنده ۸۰۸۸-۸۰۸۶
ثبات پرچم ها

ثبات پرچم ها در ریزپردازنده ۸۰۸۶/۸۰۸۸ نیز همانند سایر ثباتهای آن ۱۶ بیتی است. تک تک بیت های آن به صورت مستقل تحت تاثیر عملیات محاسباتی یا منطقی قرار می گیرند که در ALU انجام می شود. البته ۳ بیت پرچم کنترلی هم در آن قرار داده شده که می توان آنها را صفر و یا یک نمود و دستوراتی در ریزپردازنده وجود دارد که با توجه به مقادیر این سه بیت کارهای متفاوتی انجام می دهند.

az

همانطوریکه در شکل مشاهده می شود فقط ۹ بیت از ۱۶ بیت ثبات پرچم ها استفاده شده و بقیه آنها بلااستفاده است و به صورت عادی موقع خوانده شدن صفر خوانده می شود. از نظر ساختمان ثبات پرچم ها، این بیت ها طوری در نظر گرفته شده اند که ۸ بیت کم ارزش آن با بیت های ثبات پرچم ها در ۸۰۸۵ یکسان و سازگار باشد.
در ریزپردازنده ۸۰۸۶/۸۰۸۸ بیت های پرچم به دو دسته تقسیم می شوند: دسته اول بیت های پرچم کنترل و دسته دوم بیت های پرچم شرطی. بیت های پرچم کنترل سه بیت D , I , T هستند که عمل کنترل ریزپردازنده را انجام می دهند. بدین صورت که قبل از اجرای بعضی دستورات (که این بیت ها از آنها استفاده می کنند) باید مقادیر این سه بیت تعیین شده باشد. در صورتی که بیت های پرچم شرطی تحت تاثیر آخرین عمل محاسباتی یا منطقی انجام یافته در ALU قرار می گیرند و عبارتند از : S , Z , P , A , O , C. بنابراین مقادیر این بیت ها بعد از اجرای دستورات (و در اثر اجرای آنها) مشخص می شود. به بررسی تک تک آنها می پردازیم:

پرچم C
پرچم نقلی بوده و به اختصار CF نامیده می شود. مشخص کننده بیت نقلی (انتقالی) خروجی مربوط به باارزش ترین بیت در طی عملیات محاسباتی است. بیت شیفت یافته در عملیات جابجایی نیز در این پرچم قرار می گیرد. این بیت همچنین مشحص کننده بیت قرضی در عملیات تفریق نیز هست. عملیات ممکن است به صورت ۸ بیت یا ۱۶ بیت باشد. بنابراین به طور خلاصه می توان گفت که اگر پس از عملیات محاسباتی بیت نقلی یا بیت قرضی وجود داشته باشد، این پرچم یک خواهد شد، در غیر این صورت صفر می شود.

پرچم P
پرچم توازن است و به اختصار آن را با PF نشان می دهیم و مشخص کننده وضعیت توازن هشت بیت کم ارزش حاصل عملیات است. توازن زوج بر روی یک ها محاسبه می شود یعنی اگر هشت بیت کم ارزش نتیجه عملیات دارای تعداد زوجی از یک ها باشد این پرچم برابر یک خواهد شد و در غیر این صورت صفر می شود. از این بیت برای بررسی خطا های انتقال داده ها استفاده می گردد و همانطوریکه که گفته شد فقط برای هشت بیت کم ارزش داده ها قابل استفاده است.

پرچم A
بیت پرچم نقلی کمکی نامیده می شود و به اختصار آن را با AF نشان می دهیم. مشخص کننده بیت نقلی کمکی یا بیت قرضی کمکی است. یعنی مشخص کننده بیت نقلی یا بیت قرضی مربوط به چهار بیت اول از هشت بیت کم ارزش حاصل عملیات است. از این بیت برای تصحیح و تطبیق عملیات محاسباتی دهدهی (BCD) استفاده می شود.

پرچم O
بنام بیت پرچم سرریز نامیده می شود و به اختصار آن را با OF نشان می دهیم و مشخص کننده سرریز در عملیات محاسباتی هشت یا شانزده بیتی است. اگر حاصل عملیات محاسباتی هشت بیتی در هشت بیت جا نشود و همچنین حاصل عملیات محاسباتی شانزده بیتی در شانزده بیت جا نشود سرریز اتفاق می افتد و این بیت یک خواهد شد و در غیر این صورت صفر است.
در CPU ، بیت سرریز از حاصل XOR بیت های نقلی آخر و ماقبل آخر به دست می آید. (XOR بیت های نقلی وارد شده و خارج شده از باارزش ترین بیت)

پرچم Z
پرچم صفر نامیده می شود و به اختصار آن را با ZF نشان می دهیم و مشخص کننده صفر یا غیر صفر بودن حاصل عملیات است. پس از اتمام عملیات اگر حاصل عملیات برابر صفر باشد این بیت یک خواهد شد، در غیر این صورت این بیت صفر می شود.

پرچم S
پرچم علامت نامیده می شود و به اختصار آن را با SF نشان می دهیم. مشخص کننده علامت نتیجه عملیات است. یعنی بیت علامت حاصل عملیات در این بیت پرچم ذخیره می شود. لازم به ذکر است که در ریزپردازنده ۸۰۸۶/۸۰۸۸ همانند بسیاری از CPUهای معمول، اعداد منفی در فرمت متمم ۲ استفاده می شود و بنابراین آخرین بیت سمت چپ عدد بیانگر علامت آن خواهد بود. پس می توان گفت بیت پرچم S برابر باارزش ترین بیت حاصل عملیات است.

پرچم D
پرچم جهت نامیده می شود و با DF آن را نمایش می دهیم. تمام بیت های پرچم که تاکنون بررسی شد همه از نوع شرطی بودند ولی این بیت، بیت پرچم کنترلی است. یعنی قبل از اینکه عمل مورد نظر انجام گیرد، باید مقدار این بیت مشخص شده باشد. این بیت در عملیات مربوط به دستورالعمل های رشته (STRING) به کار برده می شود (در بخش مقالات میکرو رایانه در بحث اسمبلی ۸۰۸۶) و جهت افزایش یا کاهش آدرس ها (محتویات ثبات های شاخص) را تعیین می کند. در دستورالعمل های رشته، ثبات های شاخص به عنوان ثبات های آدرس های مبدا و مقصد به کار می رود و مقدار این بیت تعیین می کند که آیا بعد از هر عمل رشته، محتویات ثبات های شاخص یک (یا دو) واحد افزایش یابد، یا از مقدار آنها کم شود؟ اگر بیت پرچم D یک باشد آدرس ها کاهشی و اگر این بیت صفر باشد آدرس ها افزایشی است.

پرچم I
بنام پرچم وقفه نامیده می شود و به اختصار با IF نمایش داده می شود. این بیت وضعیت توانا یا ناتوان بودن وقفه ی پوشش پذیر را تعیین می کند. لازم به ذکر است که ریزپردازنده ۸۰۸۶/۸۰۸۸ دارای یک پایه ورودی وقفه (پوشش پذیر) است و با یک قرار دادن بیت IF می توان آن را توانا ساخت. اگر این بیت پرچم یک باشد و اگر وقفه ایی به ریزپردازنده از طریق پایه وقفه (پایه پوشش پذیر) وارد شود، ریزپردازنده وقفه را خواهد پذیرفت. اگر بیت پرچم وقفه قبل از وقوغ وقفه صفر شده باشد، در صورت وقوع وقفه، به آن ترتیب اثر داده نخواهد شد.

پرچم T
بنام پرچم تله (TRAP) نامیده می شود و به اختصار آن را با TF نشان می دهیم. اگر این بیت یک گردد ریزپردازنده را در وضعیت یک مرحله ایی قرار می دهد و با اجرای پله به پله (تک تک) دستورالعمل ها می توان به اشکال زدایی برنامه پرداخت. در حالت عادی این بیت برابر صفر است و برنامه ها به صورت معمولی اجرا می شود. وقتی در حالت یک مرحله ایی قرار گرفت (TF برابر یک شد) پس از اجرای هر دستورالعمل، CPU به طور اتوماتیک یک وقفه داخلی تولید می کند تا برنامه به صورت دستور به دستور اجرا گردد.