زبان اسمبلی چیست؟ و چگونه کار می کند

زبان اسمبلی چیست؟ و چگونه کار می کند

زبان اسمبلی چیست؟

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

زبان های سمبولیک

زبان های سمبولیک از کلمات به جای کدهای عملیاتی استفاده می کنند و به عملیات، با عبارات سمبولیک نظیر add اشاره می کنند. یک دستور در سطح پایین ترین زبان برنامه نویسی سمبولیک، زبان اسمبلی نامیده می شود که به توسط برنامه ای مترجم به نام اسمبلر به زبان ماشین (کد هدف) ترجمه خواهد شد. دستورات در یک زبان اسمبلی شامل بارگذاری متغیرها از مکانی در حافظه یا برعکس قرار دادن محتویات متغیرها در مکان خاصی در حافظه می باشد. تناظر میان دستورات زبان اسمبلی و دستورات زبان ماشین، تناظری یک به یک است: هر فرمان، توسط یک دستور پیاده سازی می شود. زبان اسمبلی، سطح پایین ترین محاوره قابل فهم را میان خود و یک انسان دارد.

نمونه ای از یک دستور در زبان اسمبلی: mov b2, 3Ah، که به معنای "مقدار 3A را به رجیستر b2 در پردازشگر انتقال بده". کد اسمبلی برای پیاده سازی الگوریتم bubble-sort که اعضا یا اسامی را در یک لیست مرتب می کند به قرار زیر است:

نیاز به کمک یا مشاوره دارید؟ با شماره 77647948-021 تماس بگیرید. ما آماده پاسخگویی هستیم!
bs proc array:DWORD,len:DWORD
     mov ecx, len
     mov edx, array
bs_o:
     xor ebp, ebp
     bs_i:
     mov eax, DWORD PTR [edx+ebp*4+4]
     cmp DWORD PTR [edx+ebp*4], eax
     jb @F
     xchg eax, DWORD PTR [edx+ebp*4]
     mov DWORD PTR [edx+ebp*4+4], eax
@@:
     add ebp,1
     cmp ebp, ecx
     jb bs_i
     loop bs_o
     pop ebp
     retn 8
bs endp

مرجع: http://www.codecodex.com/wiki/index.php?title=Bubble_sort

سعی کنید تا به یکی از خویشاوندان خود این کد را توضیح دهید. زبان اسمبلی زبان عجیبی غریبی است. حداقل چیزی که در مورد این زبان می توان گفت همین است. همچنین باگ زدایی از آن کاری بغایت سخت می باشد. امروزه، زبان برنامه نویسی اسمبلی، برای نوشتن BIOS، درایور سخت افزارها، و یا در تلویزیون ها امروزی به عنوان برنامه منوها و غیره مورد استفاده قرار می گیرد.

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

  • زبان بیسیک که در اواسط دهه 60 میلادی طراحی شد و هنوز هم از ان استفاده می شود.
  • FORTRAN افسانه ای (به معنای مترجم فرمول) که در اواسط دهه 50 میلادی طراحی شد و هنوز هم استفاده هایی دارد.
  • پاسکال، ظهور آن اوایل دهه 70 میلادی بود.
  • زبان C که در اواسط دهه 70 به وجود آمد.
  • زبان C++ که در اواسط دهه 80 میلادی ساخته شد.

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

در یک زبان برنامه نویسی سمبولیک، عباراتی نظیر A=A+B به چشم می خورند که به معنای افزودن B به A است. پردازشگر این کار را از طریق چند گام انجام می دهد:

  • محتویات باینری A را از RAM بردار و آن را درون رجیستر R1 در پردازشگر کپی کن.
  • محتویات باینری B را از RAM بردار و آن را درون رجیستر R2 در پردازشگر کپی کن.
  • محتویات R1 و R2 را در Adder کپی کن و عملیات جمع را انجام بده و حاصل را در R3 قرار بده.
  • محتویات R3 را به آدرس A در RAM کپی کن.
  • مشاهده می کنیم که تناظر یک دستور زبان سطح بالا به دستورات زبان ماشین، تناظری یک به چند است. این به معنای آن است که هر دستور زبان برنامه نویسی سطح بالا، با چندین دستور زبان ماشین پیاده سازی می شوند.


    مقالات دیگر ما را نیز بخوانید:

مطالب مرتبط

هنوز نظری ثبت نشده است.

یک نظر بگذارید

کد امنیتی: