1- Assembly Nedir?
Makinanın anlayabildiği tek dil 0 1 dir. zamanında abiler delikli kağıtla programlama yaparken demişlerki hocam bu çok kasıyor. biraz bu işi kolaylaştıralım makina dilini yazmışlar. makina dili çok hızlıdır. çünkü yapılan tek işlem hex i bin e çevirmek. Assembly ise biraz daha insancıl olsun kafayı yicez abi deyip te makina dilinde yazılmış bir dildir. Fakat Assembly ile Makina dili arasındaki ilişki diğer diller ile makina dili arasındaki ilişkiden farklıdır. örneğin: "cmp al" nin karşılığı "3c" dir. diğer dillerde dilin türüne göre interpreter(yorumlayıcı) veya compiler(derleyici) hatta bazılarında her ikiside kullanılıyor olmasına karşılık makina diliyle "01h" nasıl "00001b" ediyorsa "cmp al" da Assemblyde "3c" eder. buda asseblynin önemsenmeyecek kadar kadar azbir hız farkıyla çalışmasını sağlar.
Makina Dili
a. Makina Dili 00001011 11010111 11010110 ....................... İkili Sistem
b. Makina Dili DF AC 12 1B 3C C8 D6 7B C8...................... Onaltılı Sistem
c. Mnemonic(Assembly Dili)
MOV AX,65
ADD BX,AX
.
.
.
Assembly Dili’nin Makina Dili ile ilişkisi bu şekildedir. Yukarıda yazılı kodlar sadece görsel bir fikir verebilmek için yazılmıştır. Çalışır program parçaları değildir.
Assembly aslında öğrenilmesi zor bir dildir. Uzun zaman ve büyük emek ister. Fakat iyi bir şekilde anlatıldığında hiçte zor değil. Ama baştan şunu belirteyim: Diğer programlama dillerinde yaptıklarınızı assembly altında daha çok satır kod yazarak ve daha uzun bir zamanda elde edebilirsiniz. Buna karşın diğer dillere göre birçok üstünlüğü bulunmaktadır.
Şu anda bilgisayarınızın başında oturuyor, windows işletim sisteminiz altında bazı programları kullanıyorsunuz. Muhtemelen Internet Explorer bunlardan biri. Kullandığınız her program (*.exe *.dll *.ocx ...) hangi programlama dili ile yazılırsa yazılsın hepside derlenmiş ve ilgili dosyalar haline dönüştürülmüştürler. Bir program Delphi ile yazılmış ve derlenmiş (exe uzantılı dosya haline getirilmiş) ise tersi işlem yapılması, yani programın kodlarına geri döndürülmesi imkansızdır. Derlenmiş program artık işletim sistemimizin ve makinamızın işlemcisinin anlayabileceği bir haldedir. Yani bizim makina dili dediğimiz haldedir. Tamamen iç yapısı elektronik devre elemanlardan oluşan işlemcimiz bu makina dili halindeki kodları çalıştırabilir. Başka hiçbir şeyden anlamaz. Bilgisayarlara bu nedenle de aptal makina denmektedir. Çünkü biz ne emredersek onu işlerler. Makina dili 16 lık sayı sistemindeki değerlerden oluşur. Bu kodlar sadece sayı kümelerinden oluştukları için bir insanın bunları anlaması hele hele bu sayılar üzerinden programlarını yazması nerdeyse imkansızdır.
2- Neden Assembly , As Bize Ne Kazandıdır?
Üst düzey programlama dillerinde yazdığımız programlar platform’a bağlı (Windows, Linux, Unix vs.) çalışırlar. Biz eğer hızlı yazılım geliştirip hedefimiz bu işten para kazanmaksa üst düzey diller bu iş için idealdir. Ne zaman ki biz bu platformlardan uzaklaşalım kendimize özgü birşeylerimiz olsun dersek o zaman bu üst düzey diller bizim bu ihtiyacımıza cevap veremiyecektir. İşte bu nokta bizi yalnız bırakmayan dillerden biri C diğeride Assembly’dir. C dili Assembly diline göre insana daha yakındır. İyi de madem öyle C takılalım neden ısrarla Assembly?
C dilinde olmayan bir özelliği C diline kazandırmak istiyorsanız Assembly Dilinden faydalanırsınız. Eğer Assembly bilmiyorsanız C dilinin size sağlayacağı bir çok avantajdan mahrum kalırsınız.
Bize işlemcimiz üzerindeki her komuta aracısız erişim sağladı. Yani kod yazarken muhatabınız işlemci ve üzerinde çalışmakta olduğunuz işletim sistemidir. (Bu genelde Windows’tur ama başka bir sistemde olabilir.) Bu size oluşturacağınız programın kodlanması esnasında çok yüksek bir kod hakimiyeti sağlar. Böylece diğer dillerde aynı işi yapsanız dahi sizin assembly ile işlemci üzerindeki hakimiyetiniz en üst düzeydedir ve bunu sizin kadar temiz yapabilecek bir programlama dili ve/veya derleyici yoktur.
-Yazdığınız her satır kod 1 ila 4 byte civarında olup çok az yer kaplar. Diğer dillerde yazılan kodlar aynı işi yapsa dahi sizinle aranızda derleyici bulunmaktadır ve programın işleyişini sağlama almak amacıyla komutlar arasında ek bilgiler girilmekte ve programınızın boyutu büyümektedir. Ayrıca diğer dillerdeki komutlar işlemci üzerindeki komutlarla uyuşmaz ise derleyici bunu dolambaçlı yollardan işlemciye anlatır ve yazılan bir tek komut makina dilinde yüzlerce komuta karşılık gelebilir. Herhangi bir dildeki basit komut assembly ile yazılsa 2 ila 6 kat daha az yer kaplar.
-Yazdığınız programlar (eğer bir algoritma hatası yok ise) diğer dillerdeki şekillerine göre her zaman daha az yer kaplar. Programın az yer kaplaması çalışırken daha az bellek tüketmesi; işlemler daha az kod ile anlatıldığından daha kısa sürede işlemin bitmesi, yani programımız daha hızlı çalışması anlamına gelir.
Avantajları :
- İşlemcinizin gücünü en iyi şekilde ortaya koyabilecek tek programlama dilidir.
- Cok az yer kapladığı için bilgisayar virüslerin yazımında kullanılırlar.
- Çok hızlı çalıştıkları için işletim sistemlerinde kernel ve donanım sürücülerinin programlanmasında, hız gerektiren kritik uygulamalarda kullanılmaktadır.
- Yapısı itibariyle üç boyutlu ekran kartlarında ilgili çizim ve efektlerin işlenmesi amacıyla hem oyunlar hem de programlar içinde ekran kartına hitap eden makina dili kodları kullanılmaktadır.
- Herhangi bir amaç doğrultusunda (genelde programların daha hızlı çalışması için optimize edilirken), herhangi bir programlama dili altında, o dilin kodları arasında kullanılabilir. Yani diğer dillerle beraber de kullanabilirsiniz. Sizin uzman olduğunuz dil belki Visual Basic dir. Ama işin içinden çıkamadınız, assembly bilen bir arkadaşınız sizin için birkaç kod ekledi ve tamam.
- İyi öğrenildiğinde diğer dillerde karşılaşılan büyük problemlerin assembly ile basit çözümleri olduğu görülür. Yani başka programlama dillerde çalışan insanların bu iş imkansız dediği yerde assembly devreye girer. Bu üstünlük daima var olacaktır...
- Yazdığınız programın kaynak kodlarını tüm dünya ile paylaşsanız dahi kodlar o kadar karmaşıktır ki insanlar assembly bilse dahi ne işe yaradığını çözmeleri çok uzun zamanlarını alır. (Açıklayıcı bilgiler koymadı iseniz) Assembly bilmeyen bir insanın kaynak kodu anlaması imkansızdır.
- Her program derlendiğinde makina diline dönüşür. Bunlar assembly kodlarına dönüştürülebilirler. (Buna disassembly olayı denir, bunu yapan programlar ise disassembler’lar dır.) Bu sayede assembly bilen bir insan zor da olsa diger programların çalışma şekillerini inceleyebilir ve üzerlerinde oynama yapabilir. Bu özellik de başka hiçbir dilde yoktur. Daha ileri gidip programların şifre isteyen bölümleri değişik yöntemlerle kırılabilir. Serial Generator türü programlar bu şekilde yapılabilmektedir.
- Zaman geçtikce ve insanlar üreten yerine tüketen bilgisayar kullanıcıları haline geldikçe bu dili bilmenin ayrıcalığı artmaktadır.
- not alıntıdır.









Logged
