دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۵
  • اردیبهشت

جلسه ۰۵-۰۲ : ثبات ها در زبان اسمبلی (Assembly)

  • دسته‌بندی‌ها :
جلسه ۰۵-۰۲ : ثبات ها در زبان اسمبلی (Assembly)
    • جزئیات
    • نوع محتواآموزشی

      همراهان عزیز وب سایت آموزشی پی وی لرن وقتتون بخیر و شادی، با آموزش زبان برنامه نویسی اسمبلی (Assembly) در خدمتتون خواهیم بود. بررسی ثبات ها در زبان اسمبلی (Assembly) را در بخش قبل آغاز نمودیم. در این بخش نیز مبحث را با بررسی ثبات کنترلی (Control Register) و ثبات های سگمنت (Segment Registers) ادامه می دهیم.

      ثبات ها در زبان اسمبلی (Assembly)

      ثبات کنترلی (Control Register)

      ثبات اشاره گر دستورالعمل ۳۲ بیتی و ثبات flag 32 بیتی در کنار هم به عنوان ثبات کنترلی در نظر گرفته می شوند.

      بسیاری از دستورالعمل ها شامل مقایسه و محاسبات ریاضی و تغییر وضعیت flag ها و برخی دیگر از دستورالعمل های شرطی مقدار این flag ها را برای انتقال جریان به سایر مکان ها بررسی می کنند.

      Flag های بیتی رایج در زیر آمده است:

      (Overflow Flag (OF – نشان دهنده ی یک بیت پر ارزش سر ریز (چپ ترین بیت) از داده ها پس از یک عملیات محاسباتی است.

      (Direction Flag (DF – جهت چپ یا راست را برای حرکت یا مقایسه داده های رشته تعیین می کند. وقتی مقدار DF 0 باشد ، عملیات رشته ای از چپ به راست و وقتی مقدار به ۱ تنظیم شده است ، عملیات رشته ها از راست به چپ انجام می شود.

      (Interput Flag (IF – تعیین می کند که آیا وقفه های خارجی مانند ورودی صفحه کلید و غیره را باید نادیده گرفت یا پردازش کرد. وقتی مقدار ۰ باشد وقفه خارجی را غیرفعال می کند و هنگام تنظیم بر روی ۱ باشد، وقفه خارجی را فعال می کند.

      (Trap Flag (TF – این امکان را می دهد که عملکرد پردازنده را به حالت پلکانی تنظیم کنید و برای debug کردن برنامه ها استفاده می شود.

      (Sign Flag (SF – این نشانگر علامت یک عملیات محاسبه ای است. این پرچم مطابق علامت یک مورد از داده ها پس از عملیات محاسباتی تنظیم می شود. علامت توسط چپ ترین بیت نشان داده می شود. اگر SF را به ۰ باشد نتیجه مثبت است و اگر یک باشد نتیجه منفی داریم.

      (Zero Flag (ZF – این نشان دهنده نتیجه یک عملیات ریاضی یا مقایسه ای است. در نتیجه غیر صفر flag با ۰ تنظیم می شود و نتیجه صفر آن را به ۱ تنظیم می کند.

      (Auxiliary Carry Flag (AF – شامل انتقال از بیت ۳ به بیت ۴ به دنبال یک عملیات محاسباتی است. مورد استفاده برای حسابی تخصصی است. AF زمانی تنظیم می شود که یک عملیات حسابی ۱ بایت باعث انتقال از بیت ۳ به بیت ۴ شود.

      (Parity Flag (PF – با توجه به تعداد کل ۱ های موجود در نتیجه ی به دست آمده از یک عملیات محاسباتی تنظیم می شود. در صورتی که تعداد زوج بود ، ۰  و اگر تعداد فرد باشد ۱ خواهد شد.

      (Carry Flag (CF – این شامل مقدار نقلی از بیت پر ارزش تر (چپ ترین بیت) می باشد.

      جدول زیر موقعیت flag ها را برای flag های ۱۶ بیتی نشان می دهد.

      Flag:ODITSZAPC
      شماره بیت۱۵۱۴۱۳۱۲۱۱۱۰۹۸۷۶۵۴۳۲۱۰

      بررسی ثبات ها در زبان اسمبلی (Assembly) را با بررسی ثبات های سگمنت (Segment Registers) ادامه می دهیم.

      ثبات های سگمنت (Segment Registers)

      سگمنت ها قسمت های خاصی هستند که در یک برنامه برای محتوی داده ، کد و پشته تعریف شده اند. سه نوع سگمنت اصلی وجود دارد.

      سگمنت کد (Code Segment)- شامل کلیه دستورالعمل هایی است که باید اجرا شود. یک ثبات Code Segment 16 بیتی یا ثبات CS آدرس آغازین سگمنت کد را ذخیره می کند.

      سگمنت داده (Data segment) – شامل داده ها ، ثابت ها و مناطق کار می باشد. یک رجیستری ۱۶ Data Segment بیتی یا ثبات DS آدرس شروع data segment را ذخیره می کند.

      سگمنت پشته (Stack segment) – این شامل داده ها و آدرس های بازگشت رویه ها یا زیر برنامه ها است. این به عنوان یک ساختار داده “stack” پیاده سازی شده است. ثبات Stack Segment یا SS آدرس شروع پشته را ذخیره می کند.

      جدای از رجیسترهای DS ، CS و SS ، ثبات های اضافی دیگری نیز وجود دارند – Extra segment یا سگمنت اضافه ، FS و GS ، که سگمنت های دیگری را برای ذخیره داده ها ارائه می دهند.

      رجیسترهای سگمنت آدرس های شروع یک سگمنت را ذخیره می کند. برای به دست آوردن مکان دقیق داده ها یا دستورالعمل ها در یک سگمنت، مقدار offset مورد نیاز است. برای ارجاع هر مکان حافظه در یک سگمنت، پردازنده آدرس سگمنت در ثبات بخش را با مقدار offset مکان ترکیب می کند.

      مثال

      برای درک کاربرد رجیسترها در برنامه نویسی اسمبلی به برنامه ساده زیر نگاه کنید. این برنامه ۹ ستاره را به همراه یک پیام ساده روی صفحه نمایش می دهد.

      مثال : 

      هنگامی که کد فوق کامپایل و اجرا شد ، نتیجه زیر را ایجاد می کند.

      مثال : 

      بررسی ثبات ها در زبان اسمبلی (Assembly) را در این بخش به پایان می رسانیم.

      کلام پایانی

      بررسی ثبات ها در زبان اسمبلی (Assembly) را در دو جلسه داشتیم. در جلسه ی آینده نیز مبحث آموزش زبان اسمبلی (Assembly) را ادامه می دهیم. با وب سایت آموزشی پی وی لرن همراه باشید.

      QR:  جلسه ۰۵-۰۲ : ثبات ها در زبان اسمبلی (Assembly)
      به اشتراک بگذارید