برای برنامهنویسی به این زبان، برنامهنویس باید تا حد زیادی از ساختار فایلهای اجرایی، ساختار و ساختمان دادههای حافظه و طریقه دسترسی به آنها، سختافزار، وقفههای سختافزاری و نرمافزاری و... که همگی از مفاهیم بنیادی یک رایانه هستند، اطلاع و آگاهی داشته باشد.
با استفاده از زبان اسمبلی میتوان به تمام منابع سختافزاری و نرمافزاری دسترسی مستقیم داشت و به کلیه نقاط حافظه دست یافت. برخی از ناحیههای مربوط به سیستم عامل، ناحیههای سیستمی و ممنوعه هستند که توسط سیستم عامل رزرو میشوند و زبانهای برنامهنویسی مجاز به استفاده مستقیم از آنها نیستند، اما زبان اسمبلی هیچ گونه محدودیتی در این زمینه ندارد. هر عملی با مسوولیت برنامهنویس قابل انجام است و در صورت بروز اشکال یا هر مسالهای، اشکالی به هیچ کس جز برنامهنویس وارد نیست.
برنامههای نوشته شده با اسمبلی، به دلیل نداشتن کد اضافه، بسیار سریع بوده و به عبارتی با نهایت سرعت ممکن در ماشین اجرا میشوند. ضمن این که حجم فایلهای ساخته شده نیز حداقل میزان ممکن است.
برخلاف برنامههای ساخته شده با زبانهای سطح بالا که معمولا حجم آنها به نسبت زیاد است، یک برنامه اسمبلی میتواند امور زیادی را با حداقل میزان کد انجام دهد.
به عنوان مثال، ممکن است یک برنامه نوشته شده با یک زبان سطح بالا که قرار است دو عدد را با هم جمع کرده و نتیجه را در خروجی نمایش دهد، چیزی حدود 50 تا 100 کیلوبایت شود. زیرا کدهای دیگری نیز به فایل اجرایی این گونه زبانها اضافه میشود، اما معادل همین برنامه با زبان اسمبلی شاید به یک کیلوبایت هم نرسد. ضمنا برنامههای نوشته شده با اسمبلی، حافظه اصلی را نیز کمتر اشغال میکنند.
وابستگی بهCPU
زبان اسمبلی زبانی است که هر دستور آن معادل یک دستورالعمل CPU است. بنابراین هر خانواده از پردازندهها، دستورات اسمبلی خاص خود را دارند. بنابراین زبان اسمبلیCPU های اینتل با AMD متفاوت است.
درون هر CPU تعداد مشخصی ثبات (Register) وجود دارد. ثباتها، حافظههایی کوچک، گرانقیمت و بسیار سریع هستند که مستقیما با پردازنده در ارتباطند و با سرعت CPU کار میکنند. اگر ظرفیت و تعداد ثباتهای CPU افزایش یابد، قیمت آن بسیار گران خواهد شد و خرید آن به صرفه نخواهد بود. بنابراین با همین تعداد محدود، برنامهنویسی انجام میشود.
یک برنامهنویس اسمبلی به طور کامل حافظه اصلی و تعدادی از ثباتهای CPU را در اختیار دارد و میتواند با استفاده از آنها و به صلاحدید خود، برنامه خود را طراحی و پیادهسازی کند.
مراحل ساخت برنامه
یک برنامه اسمبلی در یک فایل متنی و در یک ویراستار معمولی مثل Notepad نوشته میشود. پس از آن که برنامه به طور کامل نوشته شد به عنوان ورودی به نرمافزاری به نام اسمبلر ارسال میشود. اسمبلر کد را بررسی میکند و در صورتی که خطایی در آن وجود نداشت، یک فایل با پسوند obj تولید میکند.
محتوای این فایل object code یا همان کدهای زبان ماشین است. این کدها هنوز قابل اجرا توسط ماشین نیستند و برای اجرا باید به فایل اجرایی تبدیل شوند. برنامهای دیگر بهنام پیوند دهنده (Linker) وجود دارد که یک یا چند فایلobj را به عنوان ورودی گرفته و یک فایل اجرایی با پسوند .exe تولید میکند. این فایلی است که میتواند مستقیما روی ماشین اجرا شود. فایل مربوط به پیوند دهنده معمولا فایلی به نام link.exe است. برای اسمبل کردن کدهای برنامه نیز، نگارشهای مختلفی از اسمبلرها وجود دارد که دو نسخه معروف و پرکاربرد آنها Masm و Tasm است.
Masm یا Micro Assembler ، محصول شرکت مایکروسافت وTasm یاTurbo Assembler محصول شرکت بورلند(Borland) است. گاهی برنامههایی که با یکی از اسمبلرها سازگار است، در دیگری با خطا مواجه میشود که با اندکی تغییر میتوان خطا را رفع کرد.
برای هر خانواده از پردازندهها، یک نسخه اسمبلر مخصوص توسط شرکتهای سازنده عرضه میشود و زبانهای برنامهسازی سطح بالا که روی رایانههای مختلف اجرا میشوند، به هنگام ساخت فایل اجرایی باید از اسمبلرهای مخصوص آن پردازنده استفاده کنند.
در تپش این هفته، ماجرای فریب و تعرض در پوشش عرفانهای دروغین و رمالی را بررسی کردیم