CAYBURG.COM
Programlama Dilleri Delphi, Visual Basic, C, C++,C#, ASP, Perl, Php, Html vb. diller hakkında bilgi ve birikimlerinizi paylaşabilir ve yardım alabilirsiniz.
Cevapla
Assembly Nedir? Avanatajları ve Dezavantajları Bu konu 558 defa okundu ve 16 yorum yazildi.
 
Seçenekler
Alt 06.09.2007, 18:16   #1
kozzi √
VIP Members
Standart Assembly Nedir? Avanatajları ve Dezavantajları

Assembly Nedir?

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.

Peki Assembly bize ne sağladı? :

-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.

Dezavantajları :

- Dilin öğrenilmesi uzun zaman ve emek ister.
- Yazılan programlar diğer diller göre daha çok satırdan oluşur.
- Yazdığınız programın hangi satırlarının ne iş yaptığını bir süre sonra anlamayabilirsiniz. Çünkü anlaşılması zor ve karmaşık bir dildir. Bu nedenle kodların sonuna açıklama bölümleri eklemek iyi bir çözüm olacaktır.
- İşlemciye birebir bağımlıdır. Yani sonraki sayfalarda anlatılacak olan kodlar Intel ve uyumlu (AMD, Cyrix, Via) işlemcilerde geçerlidir. Örneğin Motorola işlemcileri kullanan Macintosh bilgisayarlarda hem komut setinin hem de işlemci mimarisindeki büyük farklılıklardan dolayı geçersizdir. Fakat onlarda da bir makina dili tabii ki bir assembly dili bulunmaktadır. Fakat komutlar daha farklıdır. Bizim ilgi alanımız intel 386 (i386) üstü ve bunlarla uyumlu işlemcilerdir.
kozzi isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 07.09.2007, 09:35   #2
urec
Anaokulu
Standart Cevap: Assembly Nedir? Avanatajları ve Dezavantajları

ne kadar zor ve güzel bir dildir bu assembly. En ufak şey için satırlarca kod yazarsın ama zevklidir, güzeldir.
urec isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 15.09.2007, 21:56   #3
4us
Silver Members
Standart Cevap: Assembly Nedir? Avanatajları ve Dezavantajları

urec´isimli üyeden Alıntı Mesajı göster

ne kadar zor ve güzel bir dildir bu assembly. En ufak şey için satırlarca kod yazarsın ama zevklidir, güzeldir.

işte bu sayfaya bu yorumu yapmak için girmiştim
4us isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 16.09.2007, 11:09   #4
amid21
Ilkokul 1. Sinif
Standart Cevap: Assembly Nedir? Avanatajları ve Dezavantajları

bilgi için tşklerrr
amid21 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 17.09.2007, 02:43   #5
Bay poppy
Silver Members
Standart Cevap: Assembly Nedir? Avanatajları ve Dezavantajları

Teşekkürler...
poppy isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 28.09.2007, 10:20   #6
estoinc84
Anaokulu
Standart Cevap: Assembly Nedir? Avanatajları ve Dezavantajları

Sağol kardeş çok güzel anlatmışsın
estoinc84 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 25.11.2007, 21:33   #7
nily152
Ilkokul 1. Sinif
Standart Cevap: Assembly Nedir? Avanatajları ve Dezavantajları

Gürünüşe bakılırsa zor ama kullanışlı bir dil. En kısa zamanda öğrenmeyi düşünüyorum.
Bilgi için teşekkürler.
nily152 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 12.02.2008, 02:11   #8
çarçela
Banned
Standart Cevap: Assembly Nedir? Avanatajları ve Dezavantajları

paylaşım için çok teşekkür edrim. ayriyeten böyle paylaşımların devamını dilerim...
çarçela isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 10.03.2008, 13:10   #9
burak1981
Anaokulu
Standart Cevap: Assembly Nedir? Avanatajları ve Dezavantajları

Paylaşım için çok teşekkürler
burak1981 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 08.04.2008, 17:51   #10
oguzdre4m
Bronze Members
Standart

çok uğraştıran bir dil bi yazıyı ekrana bastırcan bir sürü kodla uğraş
oguzdre4m isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla

Seçenekler

Yetkileriniz
Yeni Mesaj yazma yetkiniz Aktif değil dir.
Mesajlara Cevap verme yetkiniz aktif değil dir.
Eklenti ekleme yetkiniz Aktif değil dir.
Kendi Mesajınızı değiştirme yetkiniz Aktif değildir dir.

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı

Benzer Konular
Konu Konuyu Başlatan Forum Cvpl Son Mesaj
Astroloji Nedir? Tarot nedir..? MyLove Burçlar ve Fallar 1 02.01.2009 22:39
Php nedir? Swipe Php-Asp Hazir Scriptler 2 02.10.2008 10:39
Aşk nedir? erkangungor Şiirler 0 29.09.2008 23:01
m-HD Assembly (2007) X264 Fenix Yabancı Film Paylaşımları 0 16.09.2008 23:54
Nedir Bu Şey? roccoman Zeka Soruları ve Bilmeceler 2 09.05.2008 11:59

Paylaşmak Özgürlüktür - Arşiv - Yukarı git Web Stats
Rapidshare Uploaded.to Uptal.com Upshare.NET Filefactory.com Anket WinRAR | File Hosting Free Kurd Radyo Dinle Bedava Albüm Indir Yeni Albüm Albüm Paylasim .Net .Org
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206
Powered by vBulletin® Version 3.7.5 ©2000 - 2009, Jelsoft Enterprises Ltd.
Bütün Zaman Ayarları WEZ +2 olarak düzenlenmiştir. Şu Anki Saat: 06:51 .