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

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

تصویر assembly-introduction_2817 معرفی زبان اسمبلی - آموزش Assembly

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

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

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

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

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

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

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

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

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

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

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

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

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

  • یک کلمه (Word): یک آیتم 2 بایتی
  • دو کلمه (DoubleWord): یک آیتم 4 بایتی (32 بیتی)
  • چهار کلمه (QuadWord): یک آیتم 8 بایتی (64 بیتی)
  • پاراگراف (Paragraph): یک ناحیه 16 بایتی (128 بیتی)
  • کیلوبایت (Kilobyte): 1024 بایت
  • مگابایت (Megabyte): 1,048,576 بایت

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

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

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

مقدار بیت11111111
ارزش مکانی1286432168421
شماره بیت76543210

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

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

سیستم اعداد هگزادسیمال از پایه 16 استفاده می کند. رقم های موجود در این سیستم از 0 تا 15 می باشد. بر اساس قرار داد، حروف A تا F برای نشان دادن اعداد 10 تا 15 استفاده می شود.

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

عدد ده دهینمایش باینرینمایش هگزادسیمال
000
111
2102
3113
41004
51015
61106
71117
810008
910019
101010A
111011B
121100C
131101D
141110E
151111F

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

مثال

تبدیل عدد باینری (1000 1100 1101 0001) به معادل هگزادسیمال:

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

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

مثال

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

معادل باینری عدد بالا برابر است با (1111 1010 1101 1000).

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

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

قانون اولقانون دومقانون سومقانون چهارم
1
0111
+0+0+1+1
=0=1=10=11

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

مثال

ده دهیباینری
6000111100
+4200101010
10201100110

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

مثال

عدد  5300110101
معکوس11001010
افزودن 100000001
عدد  -5311001011

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

مثال

کم کردن مقدار 42 از 53:

عدد  5300110101
عدد 4200101010
معکوس بیت عدد 4211010101
افزودن 100000001
عدد  -4211010110
53 – 42 = 1100001011

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

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

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

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

پردازنده ممکن است در یک زمان، به یک یا چند بایت از حافظه دسترسی داشته باشد. عدد هگزادسیمال 0725H را در نظر بگیرید. این عدد به دو بایت از حافظه نیاز دارد. بایت مرتبه بالاتر 07 و بایت پایین تر 25 است.

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

x: آدرس حافظه

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

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

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