Bilgisayar sisteminin yapısı ve işletim sistemi gibi platformlar ile sıkı bir bağı olan Assembly programlama dili, düşük seviyeli bir dildir. C, C++, Pascal ve C# gibi yüksek seviyeli programlama dillerine göre yer alır. Bunların yanı sıra anlaşılması ve öğrenilmesi oldukça zor olan bir dildir. Assembly programlama dili yazmak isteyen bir kişinin ilk önce kullanacağı bilgisayarın donanımsal özelliklerini bilmesi gerekir. Çünkü bu dil ile yazılacak olan program mikroişlemcinin yapısına bağlıdır. Uzun zaman ve büyük emek isteyen Assembly dili ile program yazan kullanıcı direkt olarak kullandığı bilgisayarın işlemcisi ve hafızası ile uğraşır. Bu nedenle kullanıcı RAM denilen ana bellekteki ve işlemci kaydedicilerindeki değerlere erişebilme ve onları değiştirebilme imkânına sahiptir. Tüm bilgisayarların temel yapı taşı olan mikroişlemci sadece ikili sayı sisteminde yazılan komut kodlarını anlar. Diğer bir deyişle mikroişlemci yalnızca makine dilinden anlar. Assembly programlama dilinde yazılmış programların mikroişlemci tarafından anlaşılması için ise programlar makine diline çevrilir. Bu çevirme işlemi önemlidir. Bunun için ise Assembler diye adlandırılan çeşitli çevirici ya da derleyici programlar kullanılır. Herhangi bir bilgisayarda çalıştırılmış olan bütün programlar ilk önce bilgisayarın ana belleği olan RAM belleğine yüklenir. Daha sonra ise buradan gelen nokta RAM belleğe yüklenen veriler sırası ile mikroişlemci tarafından okunur ardından da çalıştırılır. RAM belleğe yüklenerek yer alan veriler kullanıcıya sunulan verilerin makine dilinde olan karşılığından pek de farklı bir şey değildir. Yani aynı içerikte ama farklı dillerde olan 0 ve 1 kümeleridir. Program yazarken makine dilinde yazmak oldukça zordur. Assembly programlama dili ise tam bu noktada kullanılır. Yani makine dili ile birebir karşılığı olduğu ve komutları kısaltılmış kelimelerden oluştuğu için kullanıcılar tarafından tercih edilir. Ayrıca makine dilinde program yazmak, program yazmaktan çok daha zor ve emek isteyen bir iştir. Program diliyle ya da makine diliyle yazılan her iki programın da bu süreç içerisinde bellekte kapladığı yer aynıdır. Yani ortaya çıkan her iki programın da bellek kullanımları eşdeğerdir. Ancak düşük seviyeli olan Assembly dilini, yüksek seviyeli diller ile kıyaslama yaparsak; Assembly dili ile yazılan programların kullanım açısından daha hızlı olduğunu ve bellekte daha az yer kapladığını görürüz. Ancak program yazılma aşamasını göz önüne aldığımızda yüksek seviyeli dillerde program yazmak çok daha kolaydır. Günümüzde Assembly programlama dilinin kullanımı daha çok sistem programcıları tarafından diğer programlama dillerine dâhil şekilde kullanılmaktadır.
Assembly Programlama Dilinin Avantajları Nelerdir?
Her ne kadar öğrenmesi ve Assembly dilinde program yazması zor olsa da bu dilin de kullanıcılarına sağladığı birçok çeşitli faydaları ve avantajları vardır. Bunları şu şekilde sıralayabiliriz:
- Assembly dili kullanıcısına işlemci üzerindeki her komuta aracısız erişim sağlar. Yani kod yazan bir kullanıcının muhatabı yalnızca işlemci ve üzerinde çalıştığı işletim sistemidir. Böylelikle oluşan programın kodlama aşamasında kullanıcının kod üzerindeki hâkimiyeti çok yüksektir. Bu hâkimiyet sonucunda ise kullanıcı en temiz ve üst düzede bir programlama dili ortaya çıkarmış olur.
- Bir diğer avantaj ise Assembly dili ile yazılan her kodun 1 ila 4 byte arası bir boyutta olup bellekte çok az yer kaplamasıdır. Diğer dillerde de aynı iş yapılmış olsa da kullanıcı ve kod arasında derleyici olduğu için komutlar arasında ek bilgiler girilir ve programın boyutu doğal olarak büyür. Ayrıca Assembly haricinde dillerde yazılan komutlar işlemci ile uyuşmazsa arada bulunan derleyici bu uyuşmazlığı ortadan kaldırmak için dolambaçlı yollardan işlemciye aktarır ve bu nedenle de uyuşmayan tek bir komut makine dilinde çok sayıda komuta karşılık gelebilir. Diğer programlama dillerden herhangi biriyle yazılan çok basit bir komut Assembly dili ile yazılırsa bellekte 2 ila 6 kat daha az yer kaplar.
- Herhangi bir algoritma hatası olmadan Assembly dili ile yazılmış olan programlar, diğer dillere göre bellekte daha az yer kapladığı için, programın daha hızlı ve etkili çalışmasını sağlar.
- Assembly programlama dili bu alanda daha çok bilgisayar donanımı üzerinde çok daha iyi bir denetim sağlaması ile birlikte işlemcinin gücünü en iyi şekilde ortaya koyabilen tek programlama dili olarak da bilinir.
- Komutlarından kodlarına kadar bellekte çok az yer kaplamasından dolayı Assembly dili bilgisayar virüslerinin yazımında kullanılır. Ayrıca küçük bellekte bile çok az yer kaplayan programlar yazmaya da olanak sağlar.
- Çok hızlı çalışan bir programlama dili olduğu için işletim sistemlerinde ve donanım sürücülerini programlamada çok sık kullanılır. Ayrıca hızlı bir kullanım sağladığı için hız gerektiren kritik uygulamalarda da tercih edilir.
- Tek başına kullanılabileceği gibi, herhangi bir programlama diline ek olarak, o dilde bulunan kodlar arasında da kullanılabilir.
- Anlaşılması ve öğrenilmesi zor olmasına rağmen Assembly dilini çok iyi öğrenmiş bir kullanıcı, diğer dillerde karşılaşılan sorunların bu programlama dilinde çok basit çözümleri olduğunu görecektir.
- Açıklayıcı herhangi bir bilgi koyulmadığı sürece Assembly dilinde yazılmış olan kodlar tüm dünya ile paylaşılsa da, çok karmaşık olduğu için bu dili bilen kişiler tarafından bile anlaşılmayacaktır. Bu programlama dilini bilmeyen bir kişinin kaynak kodu alması ise oldukça imkânsızdır.
- Diğer dillerde yazılmış olan her program derleyiciler tarafından makine diline dönüştürümü için yer alan bir noktadır. Bu dönüştürme işlemi makine dili yerine Assembly kodlarına da dönüştürülebilir. Bu duruma ise gerekli olan Disassembly olayı, bu olayı yapan programlara ise Disassembler adı verilir. Yani Assembly bilen bir kişi büyük bir uğraş sonrası diğer dillerde yazılmış programların nasıl çalıştığını inceleyebilir ve bu programlar üzerinde oynamalar, değişiklikler yapabilir. Hatta daha da ileri giderek diğer dillerde yazılmış ve şifrelenmiş programların şifrelerini farklı yöntemlerle kırabilir. Bu erişim özelliği Assembly haricinde başka hiçbir programlama dilinde yoktur.
Assembly Programlama Dilinin Dezavantajları Nelerdir?
Teknolojinin bizlere sağladığı birçok avantajının yanı sıra birde mutlaka dezavantajı vardır. Bilişim teknolojisinin kullanıcılarına sunduğu gelişmiş özelliklerdeki Assembly programlama dilinin de çeşitli avantajları kadar dezavantajları da vardır. Bunları şu şekilde sıralayabiliriz:
- Assembly programlama dilini öğrenmek oldukça uzun bir zaman ve çok emek ister.
- Assembly dilinde programlar yazmak, direkt olarak bilgisayarların yapı taşı olan mikroişlemciler ile uğraşmak olduğu için mikroişlemcilerin içyapısını ve ne olduklarını çok iyi bilmek gerekir. Bu durumda kullanıcılarda ekstra bir çaba ve uğraş ister.
- Her mikroişlemci aynı değildir. Yani mikroişlemciler de türüne göre değişiklikler gösterir. Bir mikroişlemci üzerine Assembly dili ile yazılan bir program başka bir mikroişlemci üzerinde çalışmayabilir.
- Assembly dili ile yazılan programlar diğer programlama dillerine göre çok daha fazla satırdan oluşur. Bellekte kapladığı alan az olsa da ekranda kapladığı alan fazladır.
- Çok karmaşık bir dil yapısı olduğu için, yazmış olduğunuz bir programın bir zaman sonra ne işe yaradığını anlamayabilirsiniz. Buna çözüm olarak Assembly dili ile yazmış olduğunuz kodların sonuna açıklama veya hatırlatma bölümü eklemek faydalı olacaktır.
- Düşük seviyeli bir dil olan Assembly dili ile program yazmak, yüksek seviyeli diğer dillerde program yazmaya göre daha zordur ve dili karmaşık olduğu için daha çok zaman alır.