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

 

پردازشگر مرکزی طوری طراحی شده است تا تنها به مجموعه دستورات خاصی که به زبان ماشین نوشته شده اند و بصورت رشته ای از اعداد باینری هستند پاسخ دهد. یک دستور از کدهای عملیات به همراه آرگومانهای یا پارامترهای آن تشکیل شده است. بعنوان مثال، عدد باینری ۶۷۰۹۹۰۹۸۰۹۵ ممکن است معادل درخواست عملیات جمع ریاضی باشد که با عدد ۹۸ نشان داده می شود که محتویات حافظه در آدرس ۶۷۰ را با محتویات حافظه در آدرس ۹۹۰ جمع می کند و نتیجه را در آدرس ۰۹۵ قرار می دهد.

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

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

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

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، درایور سخت افزارها، و یا در تلویزیونها امروزی بعنوان برنامه منوها و غیره مورد استفاده قرار می گیرد.

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

  • زبان بیسیک که در اواسط دهه ۶۰ میلادی طراحی شد و هنوز هم از ان استفاده می شود.
  • FORTRAN افسانه ای (به معنای مترجم فرمول) که در اواسط دهه ۵۰ میلادی طراحی شد و هنوز هم استفاده هایی دارد.
  • پاسکال، ظهور آن اوایل دهه ۷۰ میلادی بود.
  • زبان C که در اواسط دهه ۷۰ بوجود آمد.
  • زبان C++ که در اواسط دهه ۸۰ میلادی ساخته شد.

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

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

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

منبع: نویاسیستم

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این قسمت نباید خالی باشد
این قسمت نباید خالی باشد
لطفاً یک نشانی ایمیل معتبر بنویسید.

Call Now Buttonمشاوره رایگان