متغیرها در زبان اسمبلی – آموزش Assembly

تصویر assembly-variables_4602 متغیرها در زبان اسمبلی - آموزش Assembly

متغیرها در زبان اسمبلی

NASM دستورالعمل های مختلفی را به منظور رزرو فضای حافظه برای ذخیره سازی متغیرها فراهم می کند. دستورالعمل define که به صورت D نوشته می شود برای اختصاص فضای ذخیره سازی استفاده می شود.

اختصاص فضای ذخیره سازی برای داده های مقداردهی شده

در زیر سینتکس مربوط به نحوه تخصیص فضای ذخیره سازی برای داده های مقداردهی شده را مشاهده می کنید:

نام متغیر، شناسه ای برای هر فضای ذخیره سازی می باشد. اسمبلر یک مقدار offset را برای هر نام متغیر تعریف شده در بخش داده تعریف می کند.

در زیر 5 نوع اصلی دستوراتی که برای تعریف متغیر در زبان اسمبلی استفاده می شوند را مشاهده می کنید:

دستورهدففضای ذخیره سازی
DBتعریف بایتاختصاص یک بایت
DWتعریف یک کلمهاختصاص دو بایت
DDتعریف یک Doublewordاختصاص چهار بایت
DQتعریف یک Quadwordاختصاص هشت بایت
DTتعریف ده بایتاختصاص ده بایت

مثال های زیر، چگونگی استفاده از این دستورات در زبان اسمبلی را نشان می دهد:

توجه داشته باشید که:

  • هر بایت از کاراکتر به عنوان مقدار ASCII و به صورت هگزادسیمال ذخیره می شود.
  • هر مقدار اعشاری به طور خودکار به معادله باینری 16 بیتی تبدیل می شود و به عنوان یک عدد هگزادسیمال ذخیره می شود.
  • پردازنده از دستور little-endian برای مرتب سازی بایت ها استفاده می شود.
  • اعداد منفی به مکمل 2 تبدیل می شوند.
  • اعداد short و long با استفاده از به صورت 32 یا 64 بیتی نمایش داده می شوند.

مثال زیر نحوه تعریف و استفاده از متغیرها را در یک برنامه اسمبلی نشان می دهد:

امتحان کنید

زمانی که کد بالا توسط کامپایلر اسمبلی و اجرا شود، نتیجه زیر را تولید خواهد کرد:

اختصاص فضای ذخیره سازی برای داده های مقداردهی نشده

دستورالعمل reverse که به صورت RES نوشته می شود، به منظور رزرو فضای ذخیره سازی برای داده های مقداردهی نشده استفاده می شود. دستورالعمل رزرو تنها یک عملوند می گیرد که عداد واحد های فضای ذخیره سازی را مشخص می کند. هر دستور define یک دستور مرتبط reverse دارد.

در زیر 5 دستورالعمل reverse اصلی را مشاهده می کنید:

دستورهدف
RESBرزور یک بایت
RESWرزرو یک Word
RESDرزرو Doubleword
RESQرزرو یک Quadword
RESTرزرو ده بایت

تعریف چندگانه

در یک برنامه شما می تواند داده ها را به صورت چندگانه تعریف کنید. مانند نمونه زیر:

در تعریف چندگانه، اسمبلر حافظه را به صورت پیوسته اختصاص می دهد.

مقداردهی چندگانه

دستور TIMES اجازه می دهد تا یک مقدار را چندین بار در یک متغیر قرار دهیم. برای مثال، یک آرایه با نام marks و اندازه 9 می تواند با استفاده از عبارت زیر تعریف و با مقدار صفر مقداردهی شود:

دستور TIME برای تعریف آرایه ها و جداول مفید است. مثال زیر 9 ستاره را روی صفحه نمایش چاپ می کند.

امتحان کنید

زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:

ثبت نظر
ریفریش کنید!
نظرات کاربران (۲ مورد)
  1. تصویر آواتار کاربر 0
    REZA سه شنبه , 22 مهر

    ممنون از راهنمایی تون.آقای سعید سیفی

  2. تصویر آواتار کاربر 0
    مرتضی دوشنبه , 26 آبان

    سایت خوبی دارین مخصوصا قسمت کامپایل آنلاین