زبان اسمبلی چیست و چه کاربردی دارد؟
در دنیای برنامه نویسی، زبان های مختلفی وجود دارد که هر کدام به روشی برنامه نویسی و کد های خود را به کاربران نمایش می دهند. یکی از این زبان ها، زبان اسمبلی می باشد که یکی از زبان های سطح پایین ( ۰ و ۱) به حساب می آید. به دلیل اینکه اسمبلی دستورالعمل های پردازنده اصلی را به صورت مستقیم می نویسد، برنامه نویس باید همه جزییات سخت افزاری CPU و … را بداند و طبق آن ها برنامه نویسی کند. شما برای شناخت بیشتر زبان اسمبلی می توانید از این مقاله استفاده کنید.
آنچه در این مقاله می آموزید:
Toggleزبان های سطح بالا و سطح پایین
تفاوت زبان های سطح بالا و سطح پایین
زبان های سطح بالا
به زبان های سطح بالا، High-level نیز گفته می شود. دلیل ایجاد و طراحی این زبان ها، دشوار بودن درک و یادگیری فرآیند کار زبان های سطح پایین می باشد. این زبان ها با زبان گفتار انسان (زبان انگلیسی) نزدیکتر می باشند که باعث می شود یادگیری و درک آن ها برای برنامه نویسان ساده تر شود. زبان برنامه نویسی PHP نیز جزء این زبان به حساب می آید. علاوه بر زبان پی اچ پی زبان های دیگر برنامه نویسی نیز در این سطح وجود دارند که در زیر به شما معرفی می کنیم.
- زبان برنامه نویسی سی
- پایتون
- جاوا
- سی شارپ
- سی پلاس
- فورتران
- پاسکال
- بیسیک و کوبول
زبان های سطح پایین
نام دیگر زبان های سطح پایین، Low-Level نیز می باشد. به زبان هایی، زبان های سطح پایین گفته می شود که به زبان ماشینی یا صفر و یک نزدیک می باشند. این نوع زبان ها به طور مستقیم با پردازنده در ارتباط هستند. می توانیم زبان اسمبلی را به عنوان این مدل زبان برنامه نویسی به حساب آوریم.
زبان برنامه نویسی ماشین چیست؟
زبان برنامه نویسی ماشین وظیفه انتقال و تفهیم اطلاعات به پردازنده مرکزی کامپیوتر (CPU) را بر عهده دارد که به وسیله رشته ای از کدها در فرمت دودویی و یا باینری این کار را انجام می دهد. زبان برنامه نویسی ماشین دستورات خود را به کمک تفسیر کننده ای به نام ریز برنامه (Micro Program) به سیگنال های سخت افزاری قابل درک برای اجزای سیستم تفسیر تبدیل می کند.
معایب
- خسته کننده بودن برای برنامه نویسان به علت حجم بالای رشته کدها
- سخت و دشوار بودن یادگیری این زبان ها
- دشوار بودن عیب یابی در این نوع زبان برنامه نویسی به دلیل حجم بالای رشته کدها
زبان برنامه نویسی اسمبلی چیست؟
زبان اَسمبلی در انگلیسی به عنوان عبارت Assembly language معرفی شده است، اما در زبان فارسی به آن همگذاری نیز گفته می شود. زبان اسمبلی به عنوان یک زبان برنامه نویسی سطح پایین به حساب می آید که در رایانه ها و دیگر دستگاه های برنامه پذیر مورد استفاده قرار می گیرد. هر کدام از زبان های اسمبلی، مخصوص یک معماری رایانه می باشند. زبان اسمبلی دارای یک برنامه جانبی به نام اسمبلر می باشد و زبان های اسمبلی به وسیله این نرم افزار جانبی دستورات خود را به کد قابل اجرا و فهم کامپیوتر تبدیل می کند. این فرایند تبدیل دستورات زبان اسمبلی به کد های کامپیوتر، اسمبل کردن یا Assembling می گویند. این زبان علاوه بر قابلیت و امکاناتی که دارد، به وسیله مکانیزم هایی که دارد، فرایند توسعه برنامه، کنترل فرایند اسمبل کردن و پشتیبانی از اشکال زدایی را آسان می کند.
انجمن های یادگیری مداوم
- انجمن Assembly در In.Code
- انجمن MASM
- انجمن های Assembly Language and Machine Code در Hack Forums
کتاب های کاربردی برای یادگیری زبان اسمبلی
- (The Art of Assembly Language (Online Edition
- Write Great Code: Volume 2: Thinking Low-Level, Writing High-Level
- Assembly Language Step-by-Step: Programming with Linux
- Professional Assembly Langiuage
- Assembly Language for x86 Processors
- Modern X86 Assembly Language Programming: 32-bit, 64-bit, SSE, and AVX
- ntroduction to 64 Bit Assembly Programming for Linux and OS X: Third Edition – for Linux and OS X
- Introduction To 80X86 Assembly Language And Computer Architecture
- Assembly Language Programming: For PC and Laptop Computers
نکات مهم درباره زبان برنامه نویسی اسمبلی
- برنامه های اسمبلی مانند برنامه های سطح بالا به صورت متنی نوشته می شوند
- هر دستورالعمل زبان اسمبلی یک کد الفبائی کوتاه (mnemonic) از یک دستورالعمل ماشین می باشد
- بین عبارات زبان اسمبلی و دستورالعمل های زبان ماشین تناظر یک به یک برقرار است
- برنامه ای که به زبان اسمبلی نوشته می شود شامل مجموعه ای از دستورالعمل های پردازنده (یادیارها)، شبه دستورها، کامنت ها و داده ها می باشد.
اسمبلر چیست؟
همانطور که در قسمت زبان اسمبلی چیست گفتیم، اسمبلر برنامه ای برنامه ای می باشد که زبان اسمبلی به کمک آن دستورات خود را به آپ کد ها و شناسه های دارای آدرس حافظه تبدیل می کند و در نهایت کد هدف (Object code) را تولید می کند. یکی از ویژگی های کلیدی اسمبلر ها، ارجاعات می باشند که از بروز محاسبات خسته کننده و بهروزرسانی های دستی آدرس ها به وسیله برنامه نویس جلوگیری می کند. یکی از قابلیت های اسمبلر ها ماکرو می باشد که بیشتر اسمبلر ها از آن استفاده می کنند. از این قابلیت بیشتر در تولید توالی های دستوری کوتاه مورد استفاده قرار می گیرد. به دلیل اینکه نوشتن آن ها به نسبت مترجم های مخصوص زبان های برنامه نویسی سطح بالا آسان تر می باشد، بیشتر مورد استفاده قرار می گیرند.
رایج ترین اسمبلر های معماری ایکس۸۶
- مایکروسافت ماکرو اسمبلر (Microsoft Macro Assembler یا MASM)
- نتواید اسمبلر (Netwide Assembler یا NASM)
- گنو اسمبلر (Gnu Assembler یا GAS)
- توربو اسمبلر (Turbo Assembler یا TASM)
انواع اسمبلر بر اساس تعداد گذرها
اسمبلر های یکبار گذر
این مدل اسمبلر تنها می توانند از روی کد ها یک بار عبور کنند و در صورتی که هر نماد استفاده شده در کد تعریف نشده باشد، یک خطا (errata) در انتهای کد آبجکت ایجاد می کند تا برنامه نویس متوجه این خطا شود و آن را اصلاح نماید.
اسمبلر های چندبار گذر
اسمبلر های چند بار گذر جدول هایی از تمام نمادها و مقادیر آنها تولید می کتند و در قسمت های بعدی از این جدول ها برای ایجاد فایل های اجرایی استفاده می کنند.
اسمبلر های سطح بالا
- اسمبلر های سطح بالا قسمت های زیر را ایجاد می کنند.
- ساختارهای کنترل پیشرفته
- تعریف و فراخوانی رویه ها و توابع سطح-بالا
- انواع داده انتزاعی مانند رکورد ها و ساختارها (structures/records)، کلاس ها و مجموعه ها
- پردازش ماکرو پیشرفته
- قابلیت های برنامه نویسی شیء گرا مانند کلاس ها، انتزاع و وراثت
رایج ترین اسمبلر های معماری ایکس۸۶
- مایکروسافت ماکرو اسمبلر
- نت واید اسمبلر
- گنو اسمبلر
- توربو اسمبلر
ابزارهای زبان اسمبلی
زبان های اسمبلی دارای ابزار هایی همچون اسمبلر و IDE ها می باشد که در ادامه به آن ها می پردازیم.
اسمبلر ها
- NASM
- FASM
- YASM
- GASM
IDE (محیط یکپارچه توسعه نرم افزار)
- SASM
- Fresh IDE
- WinAsm Studio
- Visual MASM
SASM
یک IDE ساده و کراس پلتفرم (Cross-platform) می باشد که برای زیان های اسمبلی NASM، MASM، GAS، FASM مورد استفاده قرار می گیرد.
Fresh IDE
این IDE، IDE ویژوالِ زبان اسمبلی می باشد که دارای اسمبلر FASM است.
WinAsm Studio
یک IDE رایگان می باشد که با استفاده از آن می توانید به کمک Assembler برای ویندوز 32 بیت و DOS 16 بیت برنامه نویسی کنید.
مثالی از یک دستور اسمبلی
معماری 8086 از نماد MOV برای لود کردن داده در ثبات های پردازنده استفاده می کند. مثال زیر مقدار 61 هگزا دسیمال که معادل عدد دهدهی 97 می باشد را در ثبات AL اضافه می کند.
MOV AL , 61h |
کد بالا به وسیله اسمبلر به رشته باینری زیر تبدیل می شود که به پردازنده با معماری x86 اطلاع می دهد که عدد 97 را در ثبات AL قرار دهد. در نهایت پنج بیت 10110 که در زیر مشاهده می کنید مربوط به دستور بالا می باشد و سه بیت بعدی (یعنی 000) مربوط به ثبات AL است. به طور کلی معادل باینری عدد 97 به صورت 01100001 نمایش داده می شود.
10110000 01100001 |
آیا یادگیری زبان اسمبلی برایتان ضروری است؟
شاید به عنوان یک برنامه نویس برای شما سوال باشد که زبان اسمبلی را یاد بگیرید یا خیر؟ در بیشتر موارد برای برنامه نویسان جواب خیر را به همراه دارد. برای یادگیری زبان اسمبلی 2 دلیل وجود دارد، اولین دلیل استفاده مستقیم از زبان اسمبلی می باشد و دومین دلیل کسب درک بسیار قوی درباره سیستم های کامپیوتری است. علاوه بر این 2 دلیل موضوعاتی نیز وجود دارد که نشان دهنده کاربرد یا موضوعات مورد استفاده زبان اسمبلی می باشند. این موضوعات به صورت زیر می باشند
- سیستم عامل ها
- سفت افزار (Firmware)
- درایور های دستگاه (Device Driver)
- طراحی زبان
- طراحی کامپایلر (Compiler)
- سیستم های تعبیه شده (embedded Systems)
- طراحی سخت افزار
- رمزنگاری پیشرفته
- علوم کامپیوتر نظری
زبان های مورد نیاز در کنار زبان اسمبلی
با یادگیری زبان هایی همچون پایتون (Python) یا روبی (Ruby) می توانید کارهای بسیار زیادی را انجام دهید. فراموش نکنید که زبان برنامه اسمبلی هیچ وقت به تنهایی مورد استفاده قرار نمی گیرد و در کنار آن زبان های زیر مورد استفاده قرار می گیرند.
- زبان های سخت افزاری مثل VHDL و Verilog. به همراه دانشی مناسب از ریزپردازنده ها و مهندسی الکترونیک
- زبان های سطح پایین سیستم عامل مثل C و زبان های فرزندش مثل #C++، C و D
- زبان های قدیمی مثل Fortran و Cobol
- زبان های پلتفرمی مثل جاوا و Objective-C
- الگوریتم ها
- زبان طراحی کامپایلر، مفسر
دلایل یادگیری و استفاده از زبان اسمبلی
شاید برای شما هم سوال باشد که با وجود زبان های برنامه نویسی سطح بالا، چرا از اسمبلی استفاده می شود؟ دلایلی وجود دارد که در زیر به شما معرفی می شوند.
- برنامه نوشتن برای cpu خاص
- طراحی کامپایلری مثل کامپایلر c++ برای پردازنده مورد نظر
- بالا بودن سرعت اجرای برنامه ها در زبان اسمبلی
- بالا بودن دقت زبان اسمبلی به نسبت زبان های دیگر
- استفاده شدن زبان برنامه نویسی اسمبلی توسط هکر ها برای ساخت کرک و تروجان
- تبدیل هر برنامه به زبان برنامه نویسی اسمبلی
- استفاده شدن در مهندسی معکوس
- وسیله مناسب برای یادگیری کار کامپیوتر، کامپایلر ها و زبان های سطح بالا
- برنامه های اسمبلی سریع تر، کوچکتر و با توانائی های بیشتر هستند
کاربرد زبان اسمبلی
کاربرد های اختصاصی زبان اسمبلی به صورت کامل در لیست زیر برای شما معرفی می شوند.
- نوشتن کد برای سیستم هایی با پردازند ههای قدیمی تر که گزینه های محدودی برای زبان های سطح بالا دارند
- نوشتن کدی که باید تعامل مستقیم با سخت افزار داشته باشد
- برنامه هایی که نیازمند استفاده از پردازنده و دستورالعمل های مخصوص یک کامپایلر می باشند
- برنامه های با حلقه های درونی حساس به نمایش
- برنامه هایی که تابع های برداری شده را برای برنامه ها در زبان های سطح بالاتر از جمله C می سازند
- برنامه های بی درنگ از جمله شبیه سازی ها، سیستم های جهت یاب پروازی و وسایل پزشکی
- الگوریتم های رمز نگاری
- اصلاح کردن و گسترش کد ارثی نوشته شده برای کامپیوترهای بزرگ
- در محیط هایی که کنترل کامل بر محیط مورد نیاز است
- ویروس های کامپیوتر، بارگذار های بوت (راه اندازی)، گرداننده های معین دستگاه
- آیتم های بسیار نزدیک به سختافزار یا سیستم عملیاتی سطح پایین
- مجموعه ی دستور العمل ها برای نظارت، ردیابی و اشکال زدایی که میزان اضافی پردازش مورد نیاز در حد حداقل نگه داشته می شود
- مهندسی معکوس و اصلاح کردن فایل های برنامه
شباهت زبان ماشین با زبان برنامه نویسی اسمبلی
شباهت های بین زبان های ماشین و برنامه نویسی اسمبلی به صورت زیر می باشد.
- هر دو به عنوان زبان برنامه نویسی سطح پایین هستند
- به معماری پردازنده مرکزی کامپیوتر (CPU) وابسته هستند
تفاوت زبان ماشین با زبان اسمبلی
زبان برنامه نویسی ماشین و زبان برنامه نویسی اسمبلی علاوه بر شباهت ها، تفاوت هایی نیز وجود دارد که ادامه به معرفی آن ها می پردازیم.
- زبان برنامه نویسی ماشین نسبت به زبان برنامه نویسی اسمبلی به زبان کامپیوتر نزدیک تر است.
- در کد نویسی با زبان اسمبلی از کلمات اختصار یافته که به SYNTAX و یا MOV معروف است استفاده می شود.
- در زبان ماشین از رشته کدهایی برای انتقال و تفهیم اطلاعات به پردازنده مرکزی مورد استفاده قرار می گیرد.
- زبان اسمبلی بر خلاف زبان ماشین برای انسان قابل درک است.
سخن پایانییادگیری و آشنا شدن با نحوه کار زبان اسمبلی، قبل از کار و کد نویسی با این زبان بسیار مهم و ضروری می باشد. زبان اسمبلی دارای قابلیت ها، ویژگی ها، تقاوت ها و دیگر نکات مهم می باشد که در این مقاله به طور کامل به آن ها پرداخته شده است. به راحتی می توانید از این نکات در یادگیری زبان برنامه نویسی اسمبلی استفاده کنید و علاوه بر این موضوعات، از زبان اسمبلی می توانید در افزایش کارایی بهتر کد ها و برنامه ها استفاده کنید. برای دریافت پاسخ سوالات خود و بهره مند شدن از تجربه اساتید خبره و دیگر دوستانتان در کمپین آموزشی بی لرن می توانید سوالات خود را در کافه گپ و گفت مطرح نمایید و در سریعترین زمان، پاسخ سوال خود را دریافت نمایید. همچنین می توانید با عضویت در کمپین آموزشی بی لرن، از دوره های آموزشی رایگان و کاربردی در زمینه های مختلف به صورت تخصصی و حرفه ای بهره مند شوید. با توجه به مسیر یادگیری در زمینه های مختلف می توانید برای شروع طراحی سایت از آموزش PHP بهرهمند شوید. |
دیدگاهتان را بنویسید