زبان اسمبلی چیست؟ کاربرد زبان اسمبلی چیست؟ اسمبلر چیست؟ تفاوت زبان اسمبلی و زبان ماشین در چیست؟ تاریخچه زبان اسمبلی چیست؟ خالق زبان اسمبلی چه کسی است؟ مزایا و معایب زبان اسمبلی چیست؟ تبدیل زبان اسمبلی به زبان ماشین چگونه است؟ اینها سوالاتی هستند که باید در این زمینه بدانید و ما در این مطلب از مجله آموزش برنامه نویسی آموزشگاه برنامه نویسی الکامکو شما را با جواب این سوالات آشنا می کنیم.
زبان های مختلفی در دنیای برنامه نویسی وجود دارند که هر کدام به یک طریقی این امکان را به برنامه نویسان می دهند تا بتوانند با آنها کدنویسی کنند و برنامه های مختلف ایجاد کنند. زبان اسمبلی هم یکی از این زبان های برنامه نویسی است که در ادامه می خواهیم شما را با این زبان برنامه نویسی آشنا کنیم.
همانطور که می دانید هر برنامه نویس می تواند دستورات خود را با زبان های برنامه نویسی مختلفی بنویسد. زبان های برنامه نویسی زیادی برای کاربردهای مختلفی وجود دارند كه ميتوان همه آنها را به سه دسته زیر تقسيم بندی كرد:
- زبان ماشين (Machine Languages)
- زبان اسمبلي (Assembly Languages)
- زبانهاي سطح بالا (High-Level Languages)
زبان ماشین چیست؟
زبان ماشین (Machine Language) که با نام کد ماشین (Machine code) هم شناخته می شود یک زبان سطح پایین است و زبانی است که کامپیوتر فقط آن را مستقیما می فهمد و در واقع زبان ماشین، زبان منحصر به فرد یک کامپیوتر است. زبان ماشين معمولا به صورت باینری (۰ و ۱) نوشته می شود که شامل رشتهاي از اعداد ۰ و ۱ است و موجب ميشود كه كامپيوتر عمليات اصلي را كه در ارتباط با خود است درهر بار راهاندازي اجرا نمايد.
مثالی از زبان ماشین :
۱۰۱۱۰۰۰۰ ۰۱۱۰۰۰۰۱
زبان اسمبلی چیست؟
به طور خلاصه زبان اسمبلی یک زبان برنامهنویسی سطح پایین و نزدیک به سختافزار است که نسبت به زبان ماشین سطح بالاتر و از زبانهایی مانند C سطح پایینتر است. دستورات این زبان توسط اسمبلر به کد ماشین ترجمه و پس از آن، اجرا میشوند.
زمانيكه كامپيوترها مورد استفاده عموم قرار گرفتند، مشخص شد برنامهنويسي زبان ماشين براي بسياري از برنامهنويسان خسته كننده و ملالتآور است. در عوض، بكار بردن رشتهاي از اعداد كه كامپيوتر بتواند بصورت مستقيم آنرا درك كند، برنامهنويسان از عبارات كوتاه شده زبان انگليسي براي فهماندن عمليات ابتدايي به كامپيوتر استفاده كردند. اين عبارات مخفف شده شبيه زبان انگليسي، مبناي زبان اسمبلي (Assembly language) هستند. برنامههاي مترجم بنام اسمبلر مشهور ميباشند كه زبان اسمبلي را به زبان ماشين ترجمه ميكنند.
مثالی از زبان اسمبلی: در این مثال زبان ماشین بالا به اسمبلی تبدیل شده است:
B0 61
زبان اسمبلی (Assembly language) یک زبان برنامهنویسی سطح پایین است که برای برنامهنویسی کامپیوترها و دستگاههای الکترونیکی استفاده میشود. در این زبان، دستورات مستقیماً به زبان ماشین ترجمه میشوند و برای تعامل با سیستمعامل و سختافزار، به عنوان یک واسط بین زبان برنامهنویسی ارتباطی (مانند C و ++C) و دستگاههای سختافزاری مورد استفاده قرار میگیرد.
همچنین بخوانید» آموزش برنامه نویسی #C از صفر تا صد
در زبان اسمبلی (Assembly language) ، برای هر دستور سختافزاری یک عبارت معادل وجود دارد که با استفاده از نمادهایی مانند مخففها، عدد باینری و نوع دستور، نوشته میشود. همچنین، برای دسترسی به حافظه و پردازش دادهها نیز از آدرسدهی و رجیسترهای سختافزاری استفاده میشود.
استفاده از زبان اسمبلی برای برنامهنویسی، به دلیل کنترل دقیق بر دستگاههای سختافزاری و سرعت اجرای بالا، میتواند در زمینههایی مانند کرنل سیستمعامل، رابطهای کاربری بدون مجموعه نرمافزاری (Bare-metal programming)، برنامهنویسی میکروکنترلرها و دستگاههای جانبی مورد استفاده قرار گیرد.
به دلیل اینکه اسمبلی دستورالعمل های پردازنده اصلی را به صورت مستقیم می نویسد، برنامه نویس باید همه جزییات سخت افزاری CPU و … را بداند و طبق آن ها برنامه نویسی کند.
زبان اسمبلی با استفاده از یک برنامهٔ جانبی به نام اسمبلر یا همگذار، به کد ماشین قابل اجرا تبدیل میشود؛ به این فرایند تبدیل، اسمبل کردن (به انگلیسی: Assembling) گفته میشود.
همچنین بخوانید » دوره آموزشی فلاتر از مبتدی تا پیشرفته برای ساخت اپ های اندروید و ios | برنامه فلاتر چیست؟
اسمبلر چیست؟
اسمبلر (Assembler) نرمافزاری است که برای ترجمه کد اسمبلی به زبان ماشین برای دستگاههای الکترونیکی مانند کامپیوترها، میکروکنترلرها و میکروپروسسورها استفاده میشود. این نرمافزار به طور خاص به کد اسمبلی که توسط برنامهنویس نوشته شده است، توجه میکند و آن را به کد ماشین تبدیل میکند که توسط پردازنده قابل اجراست.
در اسمبلر، برنامهنویس میتواند به صورت مستقیم به سختافزار دستوراتی را ارائه کند که توسط پردازنده قابل فهم هستند. با این حال، برای ارائه دستورات به صورت مستقیم به پردازنده، نیاز به نوشتن کدهای بسیار زیاد و پیچیده است که با استفاده از اسمبلر این فرآیند سادهتر میشود.
استفاده از اسمبلر برای برنامهنویسی برای دستگاههای الکترونیکی در صنایع مختلف از جمله اتومبیلسازی، صنایع هوا و فضا، الکترونیک، رباتیک و… رایج است.
مثالی از زبان اسمبلی چیست؟
در زبان اسمبلی، برای هر دستور موجود در ماشین، یک کد معین و یک سری عملیات مربوط به آن دستور تعریف میشود. این کدها بسیار ساده هستند و به راحتی میتوان آنها را به زبان انسانی توضیح داد. برای مثال، دستور ADD به منظور جمع دو عدد در زبان اسمبلی به صورت زیر نوشته میشود:
ADD AX, BX ; جمع محتوای ثبتهای AX و BX
این دستور به معنای جمع محتوای ثبتهای AX و BX است. سپس محتوای جمع در ثبت AX ذخیره میشود. بنابراین، دیدن کدهای اسمبلی برای کسانی که با سطح پایین کامپیوتر آشنایی دارند بسیار آسان است.
تفاوت زبان اسمبلی و زبان ماشین در چیست؟
زبان اسمبلی (Assembly Language) و زبان ماشین (Machine Language) دو زبان متفاوت هستند، اما به طور کلی به یکدیگر وابسته هستند.
زبان ماشین، زبانی است که توسط پردازنده کامپیوتر قابل فهم است. کدهای ماشین شامل یک سری دستورات باینری (۰ و ۱) هستند که توسط سختافزار کامپیوتر برای انجام عملیات استفاده میشوند. زبان ماشین برای برنامهنویسان کمی سخت است و بسیاری از برنامهنویسان با استفاده از زبانهایی مانند اسمبلی به جای آن استفاده میکنند.
از طرف دیگر، زبان اسمبلی، یک زبان برنامهنویسی سطح پایین (Low-Level Language) است که بر پایه کدهای ماشین قرار دارد. در واقع، زبان اسمبلی کد قابل فهم برای برنامهنویسان است که به سادگی میتواند به زبان ماشین تبدیل شود. بنابراین، با استفاده از زبان اسمبلی، برنامهنویسان میتوانند به طور مستقیم با کدهای ماشین کار کنند، اما در عین حال از سطح بالاتری از انتزاع استفاده میکنند که به آنها کمک میکند تا کد بهتری بنویسند.
به طور خلاصه، تفاوت اساسی بین زبان اسمبلی و زبان ماشین این است که زبان ماشین یک زبان سخت و پیچیده است که توسط سختافزار کامپیوتر قابل فهم است، در حالی که زبان اسمبلی، یک زبان برنامهنویسی سطح پایین است که برای انجام کارهای مشخص با استفاده از زبان ماشین استفاده میشود و برای برنامهنویسان قابل فهم تر است.
تاریخچه زبان اسمبلی چیست؟
زبان اسمبلی (Assembly Language) یکی از قدیمیترین زبانهای برنامهنویسی است و تاریخچه زبان اسمبلی با شروع توسعه کامپیوترها آغاز شد. در ابتدا، کامپیوترها دستگاههایی بودند که با استفاده از کدهای ماشین برای انجام عملیات برنامهریزی شده بودند. اما با پیشرفت فناوری و ظهور کامپیوترهای بزرگتر، این کدهای ماشین پیچیدهتر شدند و برنامهنویسان نیاز داشتند تا از زبانی استفاده کنند که برایشان قابل فهم تر و قابل استفاده تر باشد.
در این مرحله زبان اسمبلی طراحی شد. اسمبلی اولین بار در دهه ۱۹۵۰ میلادی ظاهر شد و در طول دهه ۱۹۶۰ و ۱۹۷۰ به شدت به کار گرفته شد. اسمبلی به دلیل قابلیت استفاده آسان و نزدیکی به کدهای ماشین برای کاربردهایی مانند سیستم عامل، کامپایلرها و درایورها مورد استفاده قرار گرفت.
اما با گسترش صنعت نرمافزار، زبانهای برنامهنویسی با سطح بالاتر (High-Level Languages) نظیر C و ++C محبوبیت بیشتری پیدا کردند و در حال حاضر برای برنامهنویسی کاربردی، بیشتر از این زبانها استفاده میشود. با این حال، زبان اسمبلی هنوز مورد استفاده قرار می گیرد.
خالق زبان اسمبلی چه کسی است؟
زبان اسمبلی یک زبان برنامهنویسی قدیمی است که از دهه ۱۹۴۰ به عنوان یک زبان سطح پایین برای برنامهنویسی سیستمهای کامپیوتری استفاده میشود. اما سازنده زبان اسمبلی واحد یا شخصی که به طور رسمی زبان اسمبلی را اختراع کرده باشد، وجود ندارد.
در دهه ۱۹۴۰، در طول جنگ جهانی دوم، افرادی مانند جان فون نویمان (John von Neumann)، جان پرسپر (John Presper Eckert) و جان موکلی (John W. Mauchly) به توسعه معماری کامپیوترهای الکترونیکی دیجیتال کمک کردند. در این دوره، زبان اسمبلی به عنوان یک روش سطح پایین برای برنامهنویسی سیستمهای کامپیوتری در نظر گرفته شد.
از آن زمان به بعد، زبان اسمبلی توسط برنامهنویسان برای برنامهنویسی سیستمهای عامل، درایورها و سایر نرمافزارهای سطح پایین استفاده شده است. در حال حاضر، مجموعهای از زبانهای اسمبلی برای بسیاری از پلتفرمهای سخت افزاری وجود دارد که همچنان توسط برنامهنویسان به عنوان یک روش سطح پایین برای برنامهنویسی سیستمهای کامپیوتری استفاده میشوند.
کاربرد زبان اسمبلی چیست؟
برای پاسخ به این سوال که زبان اسمبلی چه کاربردی دارد باید بگیم که اموزش برنامه نویسی و استفاده از زبان اسمبلی به برنامهنویس امکان میدهد که به طور مستقیم و کنترل شده با سختافزار ارتباط برقرار کند و عملیاتهای مختلفی مانند مدیریت حافظه، ورودی/خروجی، عملیات حسابی و منطقی و… را به صورت مستقیم و با سرعت بالا انجام دهد. از این رو، زبان اسمبلی عموماً برای برنامهنویسی سیستمهای جاسازی شده، سیستمهای عامل، درایورها و برنامههای پردازش سیگنال استفاده میشود.
زبان اسمبلی یک زبان برنامهنویسی پایه سطح پایین است که برای برنامهنویسی کامپیوترهایی با معماری پردازندههای x86 و ARM و دیگر معماریهای پردازندهها استفاده میشود. این زبان در واقع یک زبان ماشین قابل خواندن برای کامپیوتر است.
استفاده از زبان اسمبلی معمولا در مواردی که نیاز به کنترل دقیق بر روی سختافزار و یا بهرهبرداری حداکثری از منابع سیستم داریم، بسیار مفید است. این زبان از قابلیت دسترسی به سطح پایین سیستمعامل و سختافزار برخوردار است و بنابراین، میتوان از آن برای ایجاد برنامههای کارآمد و کاملاً بهینه برای کاربردهایی مانند درایورهای سختافزار، برنامههای دقیق تایمینگ، برنامههای کنترل کننده، و برنامههای دیگر استفاده کرد.
علاوه بر این، استفاده از زبان اسمبلی به برنامهنویسان کمک میکند تا درک بهتری از عملکرد و معماری سیستمعامل و سختافزار داشته باشند و به طور کلی، ارتباط نزدیکی با دستگاه داشته باشند.
استفاده از زبان اسمبلی در مقابل زبانهای برنامهنویسی با سطح بالاتر مانند C و ++C، معمولاً مشکلتر است و نیاز به تخصص و دانش بیشتری در این زمینه دارد. با این حال، به دلیل قابلیت کنترل دقیق بر روی سختافزار و بهینهسازی منابع، استفاده از این زبان هنوز هم در برخی موارد الزامی است.
همچنین بخوانید » بهترین و سریع ترین روش های یادگیری برنامه نویسی
مزایا و معایب زبان اسمبلی چیست؟
فواید زبان اسمبلی در برنامه نویسی چیست؟
زبان اسمبلی به عنوان یک زبان برنامهنویسی پایه، دارای مزایای زیر است:
- سرعت اجرا: زبان اسمبلی دارای سرعت بسیار بالایی برای اجرای برنامههاست. این به دلیل این است که برنامههای اسمبلی مستقیماً توسط پردازندهها اجرا میشوند و بدون نیاز به ترجمه به زبان دیگری از طرف کامپایلر، اجرا میشوند.
- کنترل کامل: در زبان اسمبلی، برنامهنویس به صورت مستقیم با سختافزار کامپیوتر تعامل دارد و کنترل کامل بر سیستم دارد. این امر باعث میشود تا برنامهنویس بتواند به صورت دقیق تر کنترل کند که چه کاری انجام شود.
- کارایی بالا: زبان اسمبلی به دلیل سادگی و قابلیت بهینهسازی، در برنامههایی با حجم کوچک و کاربردهایی با کارایی بالا بسیار مفید است.
- قابلیت انجام عملیاتهای پیچیده: در زبان اسمبلی، برنامهنویس قادر است به صورت دقیق عملیاتهای پیچیده را انجام دهد. برای مثال، میتواند به صورت مستقیم با رجیسترهای پردازنده کار کند و عملیاتهای ریاضی پیچیده را انجام دهد.
- تعامل نزدیک با سیستم: برنامهنویس در زبان اسمبلی به صورت مستقیم با سیستم عامل و سختافزار کامپیوتر تعامل دارد. این باعث میشود که برنامهنویس بتواند به صورت دقیق تر با سیستم کار کند و دسترسی به تمامی اجزای سیستم داشته باشد.
معایب زبان اسمبلی چیست؟
زبان اسمبلی یک زبان برنامهنویسی پایین سطحی است که برای برنامهنویسی ماشینها و دستگاههای الکترونیکی استفاده میشود. در زیر معایب این زبان را بررسی میکنیم:
- پیچیدگی بالا: زبان اسمبلی بسیار پیچیده است و برنامهنویسان نیاز دارند که دقیق و دقیق باشند. برنامهنویسان باید به دقت نحوه کار کامپیوتر را درک کنند و از ساختارهای پیچیدهای مانند مجموعه دستورات و رجیسترها استفاده کنند.
- سختی در نگهداری: برنامهنویسان باید به دقت نحوه کار کامپیوتر را درک کنند و از ساختارهای پیچیدهای مانند مجموعه دستورات و رجیسترها استفاده کنند. این باعث میشود که کد نوشته شده در اسمبلی سختتر در نگهداری و اصلاح باشد.
- نیاز به زمان و تلاش بیشتر: برنامهنویسی در زبان اسمبلی زمان و تلاش بیشتری نیاز دارد. برنامهنویسان باید به دقت و بدون هیچ خطایی کد را بنویسند و سپس آن را تست کنند. هر خطایی در کد میتواند باعث بازگشت به ابتدای فرآیند برنامهنویسی شود.
- عدم قابلیت استفاده مجدد: برای هر دستگاه و ماشین باید کد جدیدی نوشته شود. به عبارتی، کد نوشته شده برای یک دستگاه، برای دستگاه دیگر قابل استفاده نیست.
- نداشتن پشتیبانی خوب: زبان اسمبلی دارای پشتیبانی کمتری در مقایسه با زبانهای برنامه نویسی دیگر است.
همچنین بخوانید » دوره هایهمچنین بخوانید» آموزش طراحی اپلیکیشن اندروید با جاوا در Android Studio پروژه محور از صفر تا صد برای ورود به بازار کار: از اموزش نصب اندروید استودیو تا آموزش کامل اندروید استودیو | دوره آموزش برنامه نویسی کاتلین
زبان اسمبلی چه سطحی است؟
زبان اسمبلی یک زبان برنامهنویسی سطح پایین است. به عبارتی دیگر، این زبان برای نزدیک شدن به زبان ماشین و سطح پایین سیستمهای کامپیوتری طراحی شده است. در واقع، زبان اسمبلی به عنوان یک رابط بین زبان ماشین (سطح پایین ترین سطح برنامهنویسی که توسط کامپیوتر فهم میشود) و زبانهای برنامهنویسی سطح بالاتر مانند C و ++ Cعمل میکند.
همچنین بخوانید » محیط توسعه یکپارچه (ide) چیست؟
سینتکس زبان اسمبلی چیست؟
زبان اسمبلی یک زبان برنامهنویسی پایین سطحی است که برای برنامهنویسی ماشینها و دستگاههای الکترونیکی استفاده میشود. در این زبان، دستورات و دادهها به صورت کدهای منظمی نوشته میشوند که به دلیل نزدیکی آن به زبان ماشین، اجرای برنامه در این زبان به سرعت انجام میشود.
در زبان اسمبلی، هر دستور با استفاده از یک کد منحصر به فرد نوشته میشود. برای نمونه، دستور ADD برای افزودن دو عدد به هم، دستور MOV برای انتقال دادهها و دستور JMP برای جابهجایی به یک برچسب خاص در برنامه استفاده میشوند.
علاوه بر دستورات، در زبان اسمبلی از نمادهای خاصی نیز استفاده میشود. به عنوان مثال، ستاره (*) برای ارجاع به یک آدرس حافظه و علامت دلار ($) برای مشخص کردن یک ثابت در برنامه استفاده میشود.
نحوه نوشتن دستورات و نمادها در زبان اسمبلی بسته به ساختار آن ماشین یا دستگاه الکترونیکی متفاوت است. به عنوان مثال، دستوراتی که در معماری Intel x86 استفاده میشوند با دستوراتی که در معماری ARM استفاده میشوند متفاوت هستند.
به طور کلی، سینتکس زبان اسمبلی بسیار خاص و نزدیک به زبان ماشین است و برای نوشتن برنامههای پیچیده در این زبان، نیاز به تسلط بر دستورات و نمادهای آن و همچنین نحوه کار با آنها دارید.
همچنین بخوانید » معرفی سایت های فریلسری برنامه نویسی ایرانی و خارجی
ساختار زبان اسمبلی چگونه است؟
برچسب (Label):
برچسب، یک نام برای اشاره به یک بخش خاص از برنامه است. این نام در ابتدای خط با علامت “:” مشخص میشود. برچسبها معمولاً برای ارجاع به آدرس حافظه و همچنین به عنوان نشانگر محلی برای نوشتن توضیحات در برنامه استفاده میشوند.
دستورات (Instructions):
دستورات، دستوراتی هستند که کامپیوتر برای انجام دادن یک عملیات مشخص به کار میگیرد. دستورات اسمبلی به صورت مخفف نوشته میشوند، به عنوان مثال “MOV” برای انتقال دادهها، “ADD” برای جمع دو عدد و غیره.
آرگومانها (Arguments):
آرگومانها دادههایی هستند که به دستورات اسمبلی داده میشوند. آرگومانها میتوانند ثابتها، آدرسهای حافظه، مقادیر ثبتکنندههای پردازنده و غیره باشند. آرگومانها معمولاً با استفاده از نمادهای خاصی مانند $ برای نمایش ثابتها و [] برای نمایش آدرسهای حافظه نوشته میشوند.
توضیحات (Comments):
توضیحات یک بخش اختیاری در برنامه هستند که برای توضیح بیشتر در مورد کد استفاده میشوند. توضیحات با “#” یا “;” در ابتدای خط مشخص میشوند و تا انتهای خط ادامه مییابند.
دستورات پیشپردازنده (Directives):
دستورات پیشپردازنده، دستوراتی هستند که قبل از کامپایل برنامه اجرا میشوند.
همچنین بخوانید » مفسر برنامه نویسی چیست؟
تبدیل زبان اسمبلی به زبان ماشین چگونه است؟
تبدیل زبان اسمبلی به زبان ماشین به وسیلهی کامپایلرهای اسمبلی انجام میشود. این کامپایلرها دستورات اسمبلی را به کد ماشین قابل اجرا تبدیل میکنند.
در این فرایند، ابتدا کامپایلر اسمبلی فایلهای اسمبلی را میخواند و مجموعهای از دستورات اسمبلی را دریافت میکند. سپس این دستورات اسمبلی به صورت یک به یک توسط کامپایلر بررسی میشوند و به معادلات کد ماشین تبدیل میشوند. برای مثال، دستور ADD AX, BX در زبان اسمبلی به معادل کد ماشین ۰۱ C3 تبدیل میشود.
در نهایت، کد ماشین حاصل از تبدیل دستورات اسمبلی به کمک کامپایلر، به یک فایل قابل اجرا تبدیل شده و میتواند درون حافظهی کامپیوتر اجرا شود.
همچنین بخوانید » واسط برنامه نویسی کاربردی (API) چیست؟
نصب زبان اسمبلی
نصب زبان اسمبلی بستگی به سیستم عاملی که شما استفاده میکنید دارد. در ادامه، توضیحاتی برای نصب زبان اسمبلی برای سیستم عاملهای مختلف آورده شده است:
نصب زبان اسمبلی برای سیستم عامل ویندوز:
برای نوشتن برنامههای اسمبلی در ویندوز، میتوانید از برنامههای MASM (Microsoft Macro Assembler) یا NASM (Netwide Assembler) استفاده کنید.
برای نصب MASM میتوانید از صفحهی دانلود Microsoft Visual Studio Community رفته و نسخهی Community را دانلود و نصب کنید.
برای نصب NASM نیز میتوانید به صفحهی دانلود NASM رفته و نسخهی مناسب برای سیستم عامل خود را دانلود کنید.
نصب زبان اسمبلی برای سیستم عامل لینوکس:
در لینوکس، اغلب بستههای اسمبلی از طریق پکیج منیجرهای مختلف مانند apt-get یا yum در دسترس هستند. به عنوان مثال، برای نصب NASM در اوبونتو، میتوانید از دستور زیر استفاده کنید:
sudo apt-get update
sudo apt-get install nasm
برای سیستم عامل مک: برای نصب NASM در مک، از Homebrew استفاده کنید. برای نصب Homebrew، به صفحهی رسمی Homebrew رفته و دستورات مربوط به نصب را در ترمینال اجرا کنید. سپس، میتوانید از دستور زیر برای نصب NASM استفاده کنید.
brew install nasm
با نصب این بستهها، شما قادر خواهید بود که برنامههای اسمبلی را بنویسید و اجرا کنید.
همچنین بخوانید » گرفتن پروژه برنامه نویسی اندروید، وب و غیره چگونه است؟