معرفی زبان اسمبلی – آموزش Assembly

  • یکشنبه ۱۴ مرداد ۱۳۹۷
  • بازدید ۶۳۴ نفر

assembly introduction 2817 تصویر

معرفی زبان اسمبلی

هر رایانه شخصی دارای یک ریزپردازنده است که فعالیت های ریاضی، منطقی و کنترل کامیپوتر را مدریت می کند. هر خانواده پردازنده مجموعه دستورالعمل های خود را برای مدیریت کردن عملیات های مختلف (دریافت ورودی از صفحه کلید، نمیاش اطلاعات روی صفحه و انجام سایر کار ها) دارد. این مجموعه دستور العمل ها “دستورالعمل زبان ماشین” نامیده می شوند.

یک پردازنده تنها دستورالعمل های زبان ماشین را درک می کند که رشته های صفر و یک است. بنابراین زبان ماشین که فقط شامل ۰ و ۱ است، برای توسعه نرم افزار بسیار مبهم و پیچیده است. از این رو یک زبان سطح پایین برای یک خانواده خاص از پردازنده ها طراحی شده است که دستورالعمل های مختلفی را در فرم قابل فهم تر و نمادین نشان می دهد.

مزایای زبان اسمبلی

یادگیری زبان اسمبلی، باعث می شود تا در مورد موضوعات زیر هم آگاهی داشته باشید:

  • نحوه برقراری ارتباط برنامه ها با سیستم عامل، پردازنده و BIOS
  • نحوه نمایش داده ها در حافظه و سایر دستگاه های خارجی
  • چگونگی دسترسی پردازنده به دستورالعمل ها و اجرای آن ها
  • آگاهی از نحوه دسترسی به داده ها و پردازش آن ها
  • چگونگی دسترسی یک برنامه به دستگاه های خارجی

مزایای دیگر استفاده از زبان اسمبلی عبارت اند از:

  • به حافظه و زمان کمتری برای اجرا شدن نیاز دارد
  • امکان انجام کارهای سخت و پیچیده بر روی سخت افزار را فراهم می کند
  • برای انجام کارهایی که به زمان کمی نیاز دارند، مناسب می باشد
  • برای نوشتن برنامه های ISR و سایر برنامه هایی که در حافظه قرار می گیرند، مناسب می باشد

ویژگی های اصلی سخت افزار کامپیوتر

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

واحد اساسی ذخیره سازی کامپیوتر، Bit می باشد که می تواند ۱ (روشن) یا ۰ (خاموش) باشد. یک گروه ۹ بیتی مرتبط به هم یک بایت (Byte) را تشکیل می دهند که ۸ بیت از آن برای داده ها استفاده می شود و یک بیت آخر هم برای توازن مورد استفاده قرار می گیرد. با توجه به نقش بیت توازن، تعداد بیت هایی ۱ در هر بایت باید یک عدد فرد باشد.

بنابراین، بیت توازن، برای فرد کردن تعداد اعداد یک بایت مورد استفاده قرار می گیرد. زمانی که بیت توازن زوج باشد، سیستم تصور می کند که یک خطای توازن (هر چند رخ دادن این خطا نادر است) رخ داده است که ممکن است ناشی از یک خطای سخت افزاری یا الکتریکی باشد.

پردازنده از اندازه های زیر برای داده ها پشتیبانی می کند:

  • یک کلمه (Word): یک آیتم ۲ بایتی
  • دو کلمه (DoubleWord): یک آیتم ۴ بایتی (۳۲ بیتی)
  • چهار کلمه (QuadWord): یک آیتم ۸ بایتی (۶۴ بیتی)
  • پاراگراف (Paragraph): یک ناحیه ۱۶ بایتی (۱۲۸ بیتی)
  • کیلوبایت (Kilobyte): 1024 بایت
  • مگابایت (Megabyte): 1,048,576 بایت

سیستم اعداد دودویی

سیستم اعداد دودویی (Binary Number System) تمامی اعداد را با استفاده از دو رقم ۰ و ۱ نشان می دهد. این نوع حالت نمایشی اعداد را، نمایش در مبنای دو نیز می نامند.

جدول زیر ازرش مکانی را برای یک عدد دودویی هشت بیتی نشان می دهد که در آن همه بیت ها بر روی ON تنظیم شده اند.

مقدار بیت۱۱۱۱۱۱۱۱
ارزش مکانی۱۲۸۶۴۳۲۱۶۸۴۲۱
شماره بیت۷۶۵۴۳۲۱۰

مقدار یک عدد دودویی بر اساس حضور ۱ بیت و ارزش مکانی آن است. بنابراین مقدار عدد باینری داده شده برابر است با:

سیستم اعداد هگزادسیمال

سیستم اعداد هگزادسیمال از پایه ۱۶ استفاده می کند. رقم های موجود در این سیستم از ۰ تا ۱۵ می باشد. بر اساس قرار داد، حروف A تا F برای نشان دادن اعداد ۱۰ تا ۱۵ استفاده می شود.

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

عدد ده دهینمایش باینرینمایش هگزادسیمال
۰۰۰
۱۱۱
۲۱۰۲
۳۱۱۳
۴۱۰۰۴
۵۱۰۱۵
۶۱۱۰۶
۷۱۱۱۷
۸۱۰۰۰۸
۹۱۰۰۱۹
۱۰۱۰۱۰A
۱۱۱۰۱۱B
۱۲۱۱۰۰C
۱۳۱۱۰۱D
۱۴۱۱۱۰E
۱۵۱۱۱۱F

برای تبدیل یک عدد باینری به معادل هگزادسیمال آن را به ۴ گروه متوالی تقسیم کنید، سپس از سمت راست معادل هگزادسیمال هر بخش را بنوسید.

مثال

تبدیل عدد باینری (۱۰۰۰ ۱۱۰۰ ۱۱۰۱ ۰۰۰۱) به معادل هگزادسیمال:

معادل هگزادسیمال عدد بالا برابر است با (۸CD1).

برای تبدیل یک عدد هگزادسیمال به معادل باینری، فقط هر رقم هگزادسیمال را به معادل باینری ۴ رقمی بنویسید.

مثال

تبدیل عدد هگزادسیمال (FAD8) به معادل باینری:

معادل باینری عدد بالا برابر است با (۱۱۱۱ ۱۰۱۰ ۱۱۰۱ ۱۰۰۰).

محاسبات باینری

جدول زیر چهار قانون ساده برای جمع دودویی را نشان می دهد:

قانون اولقانون دومقانون سومقانون چهارم
۱
۰۱۱۱
=۱۰=۱۱

قوانین سوم و چهارم نشان دهنده جا به جایی یک بیت به سمت چپ می باشد.

مثال

ده دهیباینری
۶۰۰۰۱۱۱۱۰۰
+۴۲۰۰۱۰۱۰۱۰
۱۰۲۰۱۱۰۰۱۱۰

با توجه به این قانون، برای تبدیل یک عدد دودوی به مقدار منفی آن، مقادیر بیت آن را برعکس کرده و مقدار ۱ را به آن اضافه کنید.

مثال

عدد  ۵۳۰۰۱۱۰۱۰۱
معکوس۱۱۰۰۱۰۱۰
افزودن ۱۰۰۰۰۰۰۰۱
عدد -۵۳۱۱۰۰۱۰۱۱

برای کم کردن یک مقدار از دیگری، عدد را به مکمل ببرید، سپس آن ها را با هم جمع کنید.

مثال

کم کردن مقدار ۴۲ از ۵۳:

عدد  ۵۳۰۰۱۱۰۱۰۱
عدد ۴۲۰۰۱۰۱۰۱۰
معکوس بیت عدد ۴۲۱۱۰۱۰۱۰۱
افزودن ۱۰۰۰۰۰۰۰۱
عدد -۴۲۱۱۰۱۰۱۱۰
۵۳ – ۴۲ = ۱۱۰۰۰۰۱۰۱۱

سرریز آخرین بیت ۱ از دست رفته است.

آدرس دهی داده ها در حافظه

فرآیندی که پردازنده از طریق آن اجرای دستورالعمل ها را کنترل می کند، به عنوان چرخه (واکشی – رمزگشایی – اجرا) یا چرخه اجرا محسوب می شود و شامل سه مرحله متوالی است:

  • دریافت دستورالعمل از حافظه
  • رمزگشایی یا شناسایی دستورالعمل
  • اجرای دستورالعمل

پردازنده ممکن است در یک زمان، به یک یا چند بایت از حافظه دسترسی داشته باشد. عدد هگزادسیمال ۰۷۲۵H را در نظر بگیرید. این عدد به دو بایت از حافظه نیاز دارد. بایت مرتبه بالاتر ۰۷ و بایت پایین تر ۲۵ است.

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

x: آدرس حافظه

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

  • آدرس مطلق (Absolute address) – یک مرجع مستقیم از مکان خاص.
  • آدرس segment (یا offset) – شروع آدرس یک بخش حافظه با مقدار offset.
ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است