بعد از زبان ماشين، زبان اسمبلي نزديكترين زبان به زبان قابل فهم رايانه است و درواقع قديميترين زبان برنامهنويسي است. اين زبان قدرتمندترين زبان از نظر تواناييانجام كار است. اما از نظر سهولت برنامهنويسي، نسبت به ديگر زبانهاي برنامهسازي،در پايينترين درجه قرار دارد. براي برنامهنويسي به اين زبان، برنامهنويس بايدتا حد زيادي از ساختار فايلهاي اجرايي، ساختار و ساختمان دادههاي حافظه و طريقهدسترسي به آنها، سختافزار، وقفههاي سختافزاري و نرمافزاري و... كه همگي ازمفاهيم بنيادي يك رايانه هستند، اطلاع و آگاهي داشته باشد. با استفاده از زباناسمبلي ميتوان به تمام منابع سختافزاري و نرمافزاري دسترسي مستقيم داشت و بهكليه نقاط حافظه دست يافت. برخي از ناحيههاي مربوط به سيستم عامل، ناحيههايسيستمي و ممنوعه هستند كه توسط سيستم عامل رزرو ميشوند و زبانهاي برنامهنويسيمجاز به استفاده مستقيم از آنها نيستند، اما زبان اسمبلي هيچ گونه محدوديتي در اينزمينه ندارد. هر عملي با مسووليت برنامهنويس قابل انجام است و در صورت بروز اشكاليا هر مسالهاي، اشكالي به هيچ كس جز برنامهنويس وارد نيست. برنامههاي نوشتهشده با اسمبلي، به دليل نداشتن كد اضافه، بسيار سريع بوده و به عبارتي با نهايتسرعت ممكن در ماشين اجرا ميشوند. ضمن اين كه حجم فايلهاي ساخته شده نيز حداقلميزان ممكن است. برخلاف برنامههاي ساخته شده با زبانهاي سطح بالا كه معمولاحجم آنها به نسبت زياد است، يك برنامه اسمبلي ميتواند امور زيادي را با حداقلميزان كد انجام دهد. به عنوان مثال، ممكن است يك برنامه نوشته شده با يك زبانسطح بالا كه قرار است دو عدد را با هم جمع كرده و نتيجه را در خروجي نمايش دهد،چيزي حدود 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) است. گاهيبرنامههايي كه با يكي از اسمبلرها سازگار است، در ديگري با خطا مواجه ميشود كه بااندكي تغيير ميتوان خطا را رفع كرد. براي هر خانواده از پردازندهها، يك نسخهاسمبلر مخصوص توسط شركتهاي سازنده عرضه ميشود و زبانهاي برنامهسازي سطح بالا كهروي رايانههاي مختلف اجرا ميشوند، به هنگام ساخت فايل اجرايي بايد از اسمبلرهايمخصوص آن پردازنده استفاده كنند.