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. Lütfen bu sayfayı sonuna kadar okumaya devam edin.
Bir programlama dili öğrenecek insan öncelikle kolay bir dili öğrenmeli (Bu genelde Basic’dir.) Bu dil vasıtası ile programlama ve algoritma geliştirme (problemlere karşın geliştirilen hatasız ve tatmin edici çözümler diyebiliriz) hakkında bilgi ve deneyim sahibi olmalı. Son olarak ise diğer dilleri tanımalı ve seçtiği dili öğrenmeli, uygulamalar geliştirmelidir.
0C85:0100 B402 MOV AH,02
0C85:0102 B203 MOV DL,03
0C85:0104 CD21 INT 21
0C85:0106 CD20 INT 20
Yukarıda ayrıntılı çıktısı alınmış bir kod parçası bulunuyor. (Daha sonra ne işe yaradığını anlatacağım) Gri renkteki bölümler bellek lokasyonlarıdır. Yani ilgili kodların şu anda hangi bellek adresinde bulunduğunu gösteriyor bize. Kırmızı renkteki yazılar assembly kodlarıdır. Koyu yeşil kısımlar ise bu assembly kodlarının makina diline çevrilmiş halidir. Bizi ilgilendiren kırmızı bölümler olacak. Biliyorum o yazılardan hiçbir şey anlamadınız, bu çok normal...
Tam olarak anlamanız için uzun bir örnek olacak ama başlıyoruz...
Ş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...
Fakat insanların karmaşık sayılar yerine kendi konuşma dillerindeki kelimelerden oluşan bir komut kütüphanesi ile çalışmaları daha kolaydır. Bunu Basic dilinde rahatlıkla görebilirsiniz. Çünkü Basic dilindeki komutlar ingilizce bilen bir insan için öğrenme ve akılda kalma açısından çok kolay bir dildir. Makina dilindeki sayılar yani kodlar yani programımız bizim için önemlidir. Çünkü bunlar işlemcimiz üretilirken geliştirilmiş bir komut setine hitap ederler. Bir sonraki işlemci teknolojisine geçildiğinde komut seti genişletilir ve yeni komutlar eklenir. Assembly dili bu komut setindeki makina dili kodlarının insanların biraz daha kolay anlayabileceği harfler üzerinden gösterimidir. Bu tamamen semboliktir ve her assembly komutu yazıldığında birebir makina diline çevrilirler.