![http://i36.tinypic.com/2ujmt00.png](http://i36.tinypic.com/2ujmt00.png)
بعد از زبان ماشين، زباناسمبلي نزديكترين زبان به زبان قابل فهم رايانه است و در واقع قديميترينزبان برنامهنويسي است. اين زبان قدرتمندترين زبان از نظر توانايي انجامكار است. اما از نظر سهولت برنامهنويسي، نسبت به ديگر زبانهايبرنامهسازي، در پايينترين درجه قرار دارد.
برايبرنامهنويسي به اين زبان، برنامهنويس بايد تا حد زيادي از ساختارفايلهاي اجرايي، ساختار و ساختمان دادههاي حافظه و طريقه دسترسي بهآنها، سختافزار، وقفههاي سختافزاري و نرمافزاري و... كه همگي ازمفاهيم بنيادي يك رايانه هستند، اطلاع و آگاهي داشته باشد.
بااستفاده از زبان اسمبلي ميتوان به تمام منابع سختافزاري و نرمافزاريدسترسي مستقيم داشت و به كليه نقاط حافظه دست يافت. برخي از ناحيههايمربوط به سيستم عامل، ناحيههاي سيستمي و ممنوعه هستند كه توسط سيستم عاملرزرو ميشوند و زبانهاي برنامهنويسي مجاز به استفاده مستقيم از آنهانيستند، اما زبان اسمبلي هيچ گونه محدوديتي در اين زمينه ندارد. هر عمليبا مسووليت برنامهنويس قابل انجام است و در صورت بروز اشكال يا هرمسالهاي، اشكالي به هيچ كس جز برنامهنويس وارد نيست.
برنامههاينوشته شده با اسمبلي، به دليل نداشتن كد اضافه، بسيار سريع بوده و بهعبارتي با نهايت سرعت ممكن در ماشين اجرا ميشوند. ضمن اين كه حجمفايلهاي ساخته شده نيز حداقل ميزان ممكن است.
برخلاف برنامههايساخته شده با زبانهاي سطح بالا كه معمولا حجم آنها به نسبت زياد است، يكبرنامه اسمبلي ميتواند امور زيادي را با حداقل ميزان كد انجام دهد.
بهعنوان مثال، ممكن است يك برنامه نوشته شده با يك زبان سطح بالا كه قراراست دو عدد را با هم جمع كرده و نتيجه را در خروجي نمايش دهد، چيزي حدود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) است. گاهي برنامههايي كه با يكي از اسمبلرهاسازگار است، در ديگري با خطا مواجه ميشود كه با اندكي تغيير ميتوان خطارا رفع كرد.
براي هر خانواده از پردازندهها، يك نسخه اسمبلر مخصوصتوسط شركتهاي سازنده عرضه ميشود و زبانهاي برنامهسازي سطح بالا كه رويرايانههاي مختلف اجرا ميشوند، به هنگام ساخت فايل اجرايي بايد ازاسمبلرهاي مخصوص آن پردازنده استفاده كنند.