12.000 تومان 4.900 تومان

توضیحات

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

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

اکثر برنامه نویسان با زبان های سطح بالا مانند C++ یا Java کار می کنند که هر عبارت آن به چند دستورالعمل زبان ماشین ترجمه می شود. نوشتن برنامه در زبان های سطح بالا خصوصا در محیط های ویژوال راحت تر، سریع تر و با هزینه کمتری انجام می شود.

درک معنی کدهای باینری زبان ماشین برای انسان کاری دشوار و خسته کننده است. به همین دلیل برای هر خانواده از پردازنده ها یک زبان اسمبلی ارائه شد که دستورالعمل های زبان ماشین را به صورت نمادی و قابل فهم تر نشان می دهند.

مثال ۱٫ اعداد دودئی زیر یک دستورالعمل زبان ماشین خانواده اینتل است که عدد ۵ را در ثبات AL قرار می دهد.

۱۰۱۱ ۰۰۰۰ ۰۰۰۰ ۰۱۰۱

مثال ۲٫ کلمه mov نمادی برای عمل انتقال داده است. دستور اسمبلی زیر مقدار ۵ را در ثبات AL قرار می دهد که معادل کد زبان ماشین مثال ۱ است.

mov AL,5

یک برنامه اسمبلی مانند برنامه های سطح بالا به صورت متنی نوشته می شود. هر دستورالعمل زبان اسمبلی یک کد الفبائی کوتاه (mnemonic) از یک دستورالعمل ماشین است، که به این صورت معنی دستور واضح تر از کد زبان ماشین می شود. بین عبارات زبان اسمبلی و دستورالعمل های زبان ماشین تناظر یک به یک برقرار است. یعنی هر دستورالعمل اسمبلی دقیقا یک دستورالعمل زبان ماشین را نشان می دهد و بالعکس، در حالیکه در زبان سطح بالا یک عبارت معمولا به چندین دستورالعمل ماشین تبدیل می شود.

مثال ۳٫ کلمه add یک نماد برای دستورالعمل جمع است. دستور جمع ثبات های EAX و EBX به صورت زیر نوشته می شود.

بعد از روی کار آمدن این همه زبان برنامه نویسی سطح بالا چرا هنوز زبان اسمبلی کاربرد دارد؟ اسمبلی زبان نزدیک به زبان سطح ماشین است و نوشتن برنامه با آن بسیار زمان بر و دشوار است ولی هنوز دلایلی برای کاربرد زبان اسمبلی وجود دارد.

  1.  زمانی که بخواهیم برای cpu خاصی برنامه بنویسیم یا باید کامپایلری مثل کامپایلر c++ را برای پردازنده مورد نظر طراحی کنیم و با کامپایلر نوشته شده  برنامه مورد نظر را به زبان c++ بنویسیم. این روند مقرون به صرفه نیست و لذا در چنین مواردی که برای نوع خاصی از پردازنده کامپایلر زبان های سطح بالا وجود نداشته باشد باید با اسمبلی برنامه مورد نظر را نوشت.
  2. در زبان های سطح بالا  سرعت اجرای برنامه کندتر است و از طرفی دقت برنامه مانند اسمبلی نیست. مثلا اگر بخواهید برنامه برای یک روبات درون کارخانه بنویسید که زمان بندی خیلی دقیقی باید داشته باشد و اگر این زمان بندی رعایت نشود دستگاه می سوزد باید از زبان اسمبلی استفاده کنید.
  3. هکر هایی که کار ساخت کرک و تروجان را انجام می دهند باید به زبان اسمبلی مسلط باشند زیرا هر برنامه ای که نوشته می شود به زبان ماشین تبدیل می شود و از آن جایی که هر برنامه به زبان ماشین را می توان decompile کرد و به زبان اسمبلی برگرداند پس شما می توانید هر برنامه ای به زبان اسمبلی برگردانید.
    البته برنامه های بزرگ شاید تعداد خط آن بسیار بسیار زیاد باشد که این کار توسط هکر های بزرگ انجام می شود و در آن به بررسی برنامه و ساخت کرک برای آن می پردازند.به همین دلیل می گویند که یکی از کاربرد های زبان اسمبلی در مهندسی معکوس می باشد.
  4. مشاهده می شود که به اینصورت درک معنی دستورات اسمبلی بسیار روشن تر از کد زبان ماشین معادل است. با وجود این به دلیل وابستگی به ساختار پردازنده زبان اسمبلی یک زبان سطح پایین محسوب می شود. برنامه نویسی به زبان اسمبلی نسبت به زبان های سطح بالا دشوارتر است. برنامه نویس باید به جزئیات توجه بیشتری نشان دهد و اطلاعات کافی نسبت به پردازنده مورد استفاده داشته باشد. البته برنامه های اسمبلی که ماهرانه نوشته شده باشند می توانند سریع تر و با حافظه کمتری از برنامه های مشابه نوشته شده با زبان سطح بالا اجرا شوند. به همین علت هنگام ارتباط با سیستم عامل، دسترسی مستقیم به خواص کلیدی ماشین یا برای بهینه کردن قسمت های حساس برنامه های کاربردی و افزایش سرعت اجرای آنها از زبان اسمبلی استفاده می شود.فرم کلی دستورالعمل های اسمبلی به صورت زیر است:

 

دیدگاهها

هیچ دیدگاهی برای این محصول نوشته نشده است.

اولین نفری باشید که دیدگاهی را ارسال می کنید برای “زبان ماشین و اسمبلی”

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

65 + = 66

محصولی موجود نیست