Makine dili ve yüksek seviyeli diller arasında kalan assembly dili, geçmişte oldukça yaygın bir dil olup günümüzde kullanım alanı oldukça daralmıştır.Programcılık deneyimi az olan bir çok kişi assembly dili ile makine dilini birbirine karıştırabilmektedirler. Makine dili “1” ve “0” lardan oluşur ve mikroişlemcinin doğrudan çalıştırabileceği kodları temsil ederler.Bilgisayarlarda bu tür kodlar obj uzantılı dosyalar şeklinde saklanır. Assembly dili ise makine dilinde neredeyse imkansız olan program geliştirmeyi basitleştirmek için tasarlanmış bir ara dildir.Her bir komut kısaltma şekilde bir kelime ile tanımlanır.Örneğin çarpma anlamına gelen multiply işlemi MUL olarak kısaltılır.

Assembly programlarını makine diline çeviren programlara da çeviri (assembler) denilmektedir.Bütün yüksek seviyeli dillere ait derleyici ve yorumlayıcılar da hedef mikroişlemciye ait bir çevirici içerirler. Bir mikroişlemcinin donanımsal üretimi, işlemciye ait assembly dili ve çevirici programı olmaksızın bir değer ifade etmez.Çevirici ve derleyici arasındaki en büyük fark, çeviricinin ürettiği makine kodları assembly kodlarının birebir karşılığıdır. Başka bir değişle, farklı firmalara ait çevirici programlar aynı assembly kodundan birbirinden farksız makine kodu üretir. Oysa farklı firmalara ait derleyicilerin üretmiş olduğu assembly kodları ve takiben makine kodları çoğu kez birbirini tutmaz.

Assembly dili, yüksek seviyeli dillere ait kaynak dosyalarında da kullanılabilmektedir.Böylece karma bir program kodu oluşturularak yüksek başarım istenen yerlerde özel rutinler assembly dili ile yazılabilmektedir. Özellikle C/C++ gibi dillerin gömülü sistemlerin tasarımında kullanılmaya başlaması assembly diline olan ihtiyacı azaltmıştır. C dilinin donanıma yakın bir dil olması nedeniyle assembly diline ait üstünlükleri önemli miktarda kapsamıştır.

Kaynak:
Assembly Dili Komut Teknikleri ve Adresleme Yöntemleri: http://www.yazilimgelistiricileri.com/assembly-dili-komut-teknikleri-ve-adresleme-yontemleri/