ثبات های همه منظوره
CPU اوليه 8086 با چهار ثبات همه منظوره طراحی شد که در دستورات محاسباتی و ورودی/خروجی استفاده می شوند. هرکدام از اين ثبات ها يک يا چند وظيفه خاص هم دارند.
ثبات های همه منظوره می توانند به صورت 8 يا 16 بيتی استفاده شوند.هر کدام از آنها از دو بايت تشکيل شده اند؛ بايت سمت چپ را Low Order و سمت راست را High Order می نامند.
AX | Accumulator Register | همه منظوره ترين ثبات است و معمولا برای هر کاری از جمله عمليات ورودی/خروجی،رشته ای و محاسباتی به کار می رود از دو جزء AL و. AH تشکيل شده است |
BX | Base Register | تنها ثباتی که می تواند بعنوان ايندکس در آدرس دهی مورد استفاده قرار می گيرد. شامل دو قسمت BL و BH است |
CX | Count Register | بعنوان شمارنده در کنترل تعداد دفعات تکرار در دستور حلقه استفاده می شود. دارای دو قسمت CL و CH است |
DX | Data Register | در اعمال ورودی/خروجی و عمليات ضرب و تقسيم استفاده می شود. دارای دو بخش DL و DH است |
ثبات های سگمنت
برای آدرس دهی به هر يک از اين سگمنت های برنامه يک ثبات وجود دارد که مشخص می کند کدام بخش حافظه برای قسمت های مختلف برنامه به کار رفته است.
CS | Code Segment | شامل آدرس شروع سگمنت کد، که به CPU می فهماند دستورالعمل های برنامه در کجا قرار دارند |
DS | Data Segment | شامل آدرس شروع سگمنت داده که به پردازنده می فهماند داده ها و فضای کاری در کجا قرار دارد |
SS | Stack Segment | آدرس شروع سگمنت پشته را در خود ذخيره می کند |
ES | Extra Segment | آدرس شروع سگمنت اضافی، سگمنت داده دوم |
ثبات های ايندکس
دو ثبات 16 بيتی ايندکس وجود دارد که اغلب به عنوان اشاره گر به همراه DS به کار می روند تا به داده های موجود در سگمنت داده دسترسی شود. اما می توانند به همان منظورهای ديگر، مانند ثبات های همه منظوره، هم استفاده شود؛ گرچه نمی توانند به دو بخش 8 بيتی تجزيه شوند.
SI | Source Index | برای آدرس دهی و در عمليات رشته ای بعنوان مبدا استفاه می شود |
DI | Destination Index | برای آدرس دهی و در عمليات رشته ای بعنوان مقصد استفاه می شود |
ثبات های اشاره گر
ثبات های اشاره گر نگهدارنده بخش آفست در آدرس دهی هستند و همراه با يکی از ثبات های سگمنت به محلی از حافظه اشاره دارند. طبق پيش فرض ثبات های همه منظوره و ايندکس همراه با DS و ثبات های پشته همراه با SS و IP همراه با CS استفاده می شوند.
IP | Instruction Pointer | همراه با ثبات CS به دستورالعمل بعدی که بايد توسط CPU اجرا شود اشاره می کند |
SP | Stack Pointer | آفست مکانی از سگمنت پشته که عمل قرار گرفتن داده در پشته صورت می گيرد. به عبارت ديگرSS:SP به بالای پشته اشاره دارد |
BP | Base Pointer | برای دسترسی به متغيرهای محلی که در پشته قرار دارند استفاده می شود |
ثبات FLAGS
فلگ ها اطلاعاتی درباره نتايج اجرای دستورالعمل قبلی را نگه می دارند. اين نتايج به صورت بيت های مجزا در ثبات وضعيت FLAGS ذخيره می شوند. 9 بيت از 16 بيت اين ثبات برای تعيين وضعيت فعلی ماشين و نتيجه اجرای دستورالعمل به کار می روند. هر کدام از اين بيت ها هم فلگ ناميده می شوند زيرا می توانند 1 (Set) يا 0 (Not Set) باشند. بسياری از دستورالعمل ها وضعيت اين بيت ها را تغيير می دهند. گرچه کليه دستورات روی فلگ تاثير نمی گذارند.
اين ثبات فاقد آدرس است و به طور مستقيم توسط برنامه نويس قابل دسترس نمی باشد.
CF | Carry Flag | محتوی رقم نقلی بوجود آمده از باارزش ترين بيت در عمليات محاسباتی يا چرخش |
PF | Parity Flag | برای کنترل صحت انتقال داده. اگر صفر باشد تعداد بيتهای انتقالی فرد است و اگر يک باشد زوج است |
AF | Auxiliary Carry | محتوی رقم نقلی از بيت سوم به چهارم در يک بايت است. در عمليات BCD کاربرد دارد |
ZF | Zero Flag | اگر نتيجه عمليات محاسباتی صفر باشد اين بيت 1 است در غير اينصورت صفر است |
SF | Sign Flag | در صورت منفی بودن نتيجه عمليات اين بيت 1 است در غير اينصورت صفز است |
TF | Trap Flag | برای اجرای دستورالعمل به صورت دستور به دستور اين بيت بايد 1 باشد |
IF | Interrupt Flag | اگر 1 باشد وقفه فعال است و اگر صفر باشد وقفه غير فعال است يعنی سيستم وقوع وقفه را ناديده می گيرد |
DF | Direction Flag | اگر 1 باشد عمل مقايسه يا انتقال داده از سمت راست به چپ صورت می گيرد در غير اينصورت از چپ به راست |
OF | Overflow Flag | اگر در باارزش ترين بيت سرريزی وجود داشته باشد اين بيت يک می شود. (توضيحات بيشتر در محاسبات مکمل 2 داده شده است) |
تعداد بازديد : 2703