Home Kimler Online Bugünki Mesajlar Forumları Okundu Kabul Et
Geri git   KralForumuz.Biz -Bedava, indir, Film, Rapid,Rapidshare, Araba, Modifiye,Trendleri, Full, Mp3, Oyun, Okul öncesi, Program, Video, Msn, Eğitim, Ödev, Bilgiler, Resimleri, Wallpaper, Avatar, Aşk, Gençler, Muhabbet, Forum > Bilgisayar - Computer Help and Free Software Sharing > Donanım - Hardware
Kayıt ol Yardım Üye Listesi Ajanda Arama Bugünki Mesajlar Forumları Okundu Kabul Et

Yeni Konu aç Cevapla
Add to Tagza.com: Social Bookmarking site Submit to AddThisTo Submit to Digg Submit to Reddit Submit to Furl Submit to Del.icio.us Submit to Google Submit to Yahoo! This Submit to Technorati Submit to StumbleUpon Submit to Spurl Submit to Netscape
 
Seçenekler Stil
Alt 02-04-2008, 10:48 AM   #1
Kullanıcı Profili
Kayıtlı Üye
 
Platon - ait Kullanıcı Resmi (Avatar)
Bilgiler
 
Üye No: 4253
Üyelik tarihi: Feb 2008
Yaş: 33

Mesajlar: 24
Konular: 20
Ettiği Teşekkür: 1
3 Mesajına 3 Kere Teşekkür Edlidi

Tecrübe Puanı: 1
Rep Puanı : 65
Rep Seviyesi: Platon will become famous soon enough
Neden Sembolik Makina Dili Öğrenilmelidir?

Neden Sembolik Makina Dili Öğrenilmelidir?

Kaynaklar:
Peter Abel 80x86 Assembly Language
The Art of Assembly Language
Microsoft Macro Assembler 5.0 ve 6.0

Assembler'da program yazabilmek için en azından bir Assembler derleyicisi ve bir de linker programı gereklidir. Borland firmasının assembler derleyicisi TASM.EXE dosyası, linker programı ise TLINK.EXE programıdır. Microsoft assembler derleyicisi ise MASM.EXE, linker programı ise LINK.EXE programıdır. Ayrıca bir assembler programının incelenmesi amacıyla "debugger" programları kullanılır. Borland firmasının TD.EXE Microsoft firmasının CV.EXE programları vardır.
Assembler (Sembolik Makine Dili) taşınabilir genel bir dil değildir. Tamamen Mikroişlemciye bağlı olarak değişir.


1) Zaman ve kapasite problemi olan kritik kodların makine dili seviyesinde yazılması gerekebilir.C bu tür kodlar için yüksek seviyeli kalmaktadır.
2) Aşağı seviyeli programlama bilgisi bilinç düzeyini artırır. Böylece problemlerin nedenleri daha iyi anlaşılır.




1.1 Mikroişlemcilerin Çalışma Biçimleri


Mikroişlemci, bellekle 3 grup uç yoluyla bağlıdır.



C

P
U




..........

R

A
M




Kontrol yolu (Control Bus)

Data yolu (Data Bus)

Adres yolu (Address Bus)














Mikroişlemci döngüsel bir biçimde işlemlerini gerçekleştirir. Yani;
1) Bir grup byte topluluğunu RAM'den okur (instruction fetch).
2) Bu byte topluluğunun hangi komut olduğunu yorumlar.
3) Bu komutu çalıştırabilmek için elektronik devreleri çalıştırır.
4) Tekrar birinci adıma dönülerek işlemler yinelenir.

Bazı mikroişlemcilerde makine komutlarının uzunlukları hep aynıdır (Özellikle RISC grup işlemciler). Oysa Intel gibi pek çok CISC ailesi işlemcilerde konutlar farklı uzunluklarda olabilir. Mikroişlemci komutu yorumladıktan sonra uzunluluğunu da elde etmiş olur. Böylece bir sonraki komutun yerini de saptayabilir.

Mikroişlemcinin önemli bir bölümü, işlemlerin yapılmasını sağlayan mantık devreleriyle kaplıdır. Makine komutlarının operantları belleğe ilişkin olabilir. Örneğin bir makine komutu "500 numaralı bellek bölgesindeki sayıyı 1 artır" biçiminde olabilir. Bu durumda işlemci komutu çalıştırırken bellekten yine okuma ve yazma yapmak zorundadır. Yani mikroişlemci yalnızca komutu elde etmek için değil, komut içerisindeki operantları elde etmek için de belleğe erişir.

1.2 Tipik Bir RAM’in Yapısı


RAM'ler entegre devre biçiminde üretilir. Dış dünya ile bağlantıyı sağlayan çeşitli uçları vardır. Bir RAM genellikle byte biçiminde organize edilmiş gözeneklerden oluşur. Her gözenek içerisinde tipik olarak 8 bit vardır. Ama 8 bit olması zorunlu değildir. RAM'ler genellikle kapasite olarak ;

gözenek sayısı * gözenekteki bit sayısıdır.

Örnek: 1024 * 8

1024 byte'lık bir RAM'de herhangi bir gözeneği seçebilmek için ikilik sistemde 10 tane elektriksel hat gerekir. Dışarıdaki bir devre bu uçlara 5 volt ya da 0 volt gerilim uygulayarak bir sayı oluşturur. RAM devresi de bu bilgiyi alarak hangi gözeneğin seçilmiş olduğunu anlar. Bir gözeneği seçmekte kullanılan bu uçlara RAM'in adres uçları denir. A0, A1, A2, ... biçiminde gösterilir. Bunun dışında gözenek seçildikten sonra okuma mı, yoksa yazma mı yapılacağını anlatmaya sıra gelir. Bu işlem ayrı bir uçtan yapılır. BU uca R / W ucu denir. Örneğin bu uca 5 volt uygulanırsa okuma yapılacağı, 0 volt uygulanırsa yazma yapılacağı anlamına geliyor olabilir. RAM'in gözeneklerdeki bilgiyi aktarmak için kullanılan bir veri ucu vardır.Bu uçlar genellikle D0, D1, D2, ... olarak isimlendirilir. ([Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] adresinden Akbil'in mekanizmasını öğrenebilirsin (1991 işlemci).) Bu durumda 1024 * 8'lik bir RAM de 10 tane adres ucu, 8 tane data ucu ve bir tane de R/W ucu olmalıdır. ve ek olarak başka uçlar da vardır.

RAM'den okuma şöyle yapılır:
1.Adım . Adres uçlarına gözenek numarası girilir.
2.Adım: R/W okuma konumuna getirilir.
3.Adım:Bir süre beklenir ve data uçları örneklenir.

Yazma işlemi ise şöyle yapılır:
1.Adım: Gözenek numarası adres uçlarına bırakılır.
2.Adım: R/W ucu yazma konumuna getirilir.
3.Adım: Yazılacak bilgi ikilik sistemde data uçlarına bırakılır.

1.3 CPU ile RAM Arasındaki Bağlantı


Genel olarak CPU'nun adres uçları RAM'in adres uçlarıyla, data uçları da RAM'in data uçlarıyla bağlantılıdır. Benzer biçimde CPU'nun kontrol uçları RAM'in çeşitli kontrol uçlarıyla bağlantılıdır.

Bir CPU'nun adresleyebildiği maksimum fiziksel RAM kapasitesi vardır. Bu kapasite CPU'nun adres uçlarının sayısıyla doğrudan ilgilidir. Örneğin Z-80 ve 8080 işlemcilerinin 16 adres ucu vardır. Bu işlemciler ancak 64 KB bellek kullanabilirler. Intel 286 işlemcisinin 24 adres ucu, 386 ve 486 işlemcilerinin 32 adres ucu vardır. İşlemcinin RAM'den bir seferde transfer edeceği bilgi veri data uçlarının sayısına bağlıdır. Z80 ve 8080 işlemcileri 8, 8086 ve 80286 işlemcileri 16, 386 ve 486 işlemcileri 32 data ucuna sahiptir.

CPU içerisindeki elektronik devrelerle bağlantılı olan RAM'den çekilen bilginin geçici süre saklanmasında kullanılan CPU içerisindeki küçük bellek bölgelerine register denir. Bir mikro işlemcinin kaç bitlik mikro işlemci olduğu register uzunluğu ile belirlenir. Örneğin 80386 işlemcisi 32 bitlik bir işlemcidir, çünkü 32 bit register'lara sahiptir. Bir mikro işlemcinin register uzunluğu işlemcinin bir hamlede kaç bitlik bilgi üzerinde işlem yapabildiğini anlatır. Örneğin 8086 16 bitlik bir mikro işlemcidir. 32 bit iki sayı toplanacak olsa bu toplama işlemi tek işlemde değil ancak iki işlemde yapılabilir(C'de int türü derleyiciyi yazanlar tarafından genellikle işlemcinin register uzunluğu kadar alınır).

1.4 Makina Komutu Kavramı


Mikroişlemci her işlemi bir makina komutuyla yapar. Makina komutu işlemciye hangi işlemin yapılacağını anlatan byte topluluğudur. Intel işlemcilerinde makina komutlarının byte uzunlukları farklı olabilmektedir. Her mikroişlemcinin bir komut kümesi vardır. Bütün program bu komutlarla ifade edilmek zorundadır. Makina komutlarının sayısı CISC ailesi mikroişlemcilerde, RISC ailesi mikroişlemcilerine göre daha fazla ve çeşitlidir.

1.5 Makina Komutlarının Genel Biçimi


Her makina komutu gerçekte ikilik sistemde bir byte topluluğudur. Ancak sembolik makina dilinde sayılar yerine sembolik ifadeler kullanılarak gösterilirler. Zaten sembolik makina dili derleyicilerinin yaptığı şey genelde sembolik olarak yazılmış olan bu komutları sayılara dönüştürmektir. Bir makina komutu hangi işlemin yapılacağını anlatan bir işlem bilgisi ve operandlardan oluşur. Makina komutları tek operandlı ya da iki operandlı olabilirler. Makina komutlarının genel biçimi şöyledir:

Komut operand
Komut operand1, operand2

Örneğin:

INC AX
ADD AX, BX

Intel işlemcilerinde tek operandlı komutlarda operand register'a ya da belleğe ilişkin olabilir. İki operandlı komutlarda her iki operand da belleğe ilişkin olamaz. Operandlardan herhangi birisi belleğe diğeri register'a ilişkin olabilir. Operandlardan her ikisi de register'a ilişkin olabilir. Bazı makina komutlarının operandı yoktur. Bu komutlardan bazıları default bir takım register'ları operand olarak kullanırlar. Özetle makina komutları :
· Ya operandsız olur,
· Ya tek operandlı olur,
· Ya da iki operandlı olur.
· İki operandlı komutlarda her iki operand da belleğe ilişkin olamaz.

Genel olarak bir operand register'a, belleğe ya da sabite ilişkin olabilir. İki operandlı komutlarda bir operand belleğe ilişkinken, diğer operand bir sabite ilişkin olabilir. Sonuç olarak Intel işlemcilerinde komutların rastlanabilen biçimleri şunlardır:

Komut
Komut sabit
Komut reg
Komut mem
Komut reg, mem
Komut reg sabit
Komut reg, reg
Komut mem, reg
Komut mem, sabit

1.6 80x86 Mikroişlemcisinin Çalışma Modları


80x86 mikroişlemcisinin üç alışma modu vardır.

1. Gerçek Mod (Real Mode)
2. Sanal86 Mod (Virtual 86 Mode)
3. Korumalı Mod (Protected Mode)

80x86 işlemcileri reset edildiğinde çalışma gerçek modda başlar. Korumalı moda gerçek moddan yazılım yolu ile geçilmektedir. 8086, 8088, 80186 işlemcileri sadece gerçek moda çalışabiliyordu. 80286 işlemcisi gerçek mod ve korumalı modlarda çalışabilmektedir. 80386 ve sonrası bu üç modu desteklemektedir. 80X86 işlemciler gerçek modda çok küçük farklılıklar dışına hızlı bir 8086 gibi çalışmaktadır. DOS işletim sistemi gerçek modda çalışabilecek biçimde tasalanmıştır. 8086 işlemcisi 1 MB bellek kullanabilen 16 bit bir mikroişlemcidir. Bu nedenle gerçek modda ancak 1 MB bellek kullanılabilir. Korumalı mod koruma mekanizmasının, sanal bellek kullanımının, çok işlemli çalışmanın, mümkün olduğu en ileri çalışma modudur. UNIX ve Windows sistemleri korumalı modda çalışmaktadır. Sanal 86 Modu 8086 gibi çalışmanın sağlandığı ancak korumalı modun çeşitli özelliklerinin kullanılabildiği bir ara moddur. Windows işletim sisteminde komut satırı Sanal 86 Modunda çalışmaktadır çünkü Windows işletim sisteminde kullanılan taskswitch mekanizmasında Gerçek Mod kullanılamamaktadır. Windows işletim sisteminde DOS penceresi açıldığında yada herhangi bir DOS programı çalıştırıldığında işlemci Sanal 86 moduna geçmektedir. Ancak işletim sisteminin açılışında F8 tuşuna basılarak Sadece Komut İstemi seçeneği seçildiğinde Gerçek Modda çalışma söz konusu olur.

1.7 8086 İşlemcisinin Yazmaç Yapısı


8086 mikroişlemcisi toplam 14 yazmaca sahiptir.

4 adet genel amaçlı yazmaç vardır

AX(Accumlator Register),
BX(Base Register)
CX(Count Register)
DX(Data Register)

Bu yazmaçlar bütün olarak 16 bit biçiminde kullanılabilir yada düşük ve yüksek anlamlı kısımları bağımsız 8 bitlik yazmaçlar gibi de kullanılabilir. Yani 12 adet yazmaç ifadesi yazılabilir. 8 bitlik parçalar bütünü oluşturur. Yani örneğin AH ve AL yazmaçlarına yükleme yapıldığında AX yazmacı oluşturulmuştur.

2 adet indeks yazmacı vardır.

SI(Source Index Register)
DI(Destination Index Register)

Bu iki yazmaç 8 bitlik parçalara bölünmemiştir. Data bölgesini indekslemek amacıyla kullanılır.

3 Adet Gösterici Yazmacı Vardır (Pointer Register)
IP(Instruction Pointer Register)
SP(Stack Pointer Register)
BP(Base Pointer Register)

4 Adet Segment Yazmacı Vardır
CS(Code Segment Register)
DS(Data Segment Register)
SS(Stack Segment Register)
ES(Extra Segment Register)

1 Adet Bayrak Yazmacı Vardır
F

Bütün yazmaçlar 16 bit uzunluğundadır ancak sadece genel amaçlı yazmaçlar ayrıca parçalara ayrılmışlardır.

Her komut her yazmaç ile çalıştırılamayabilir. Aritmetik işlemler, karşılaştırma işlemleri yada bit işlemleri için Genel Amaçlı Yazmaçların hepsi kullanılabilir. SI ve DI yazmaçları indeksleme amacıyla tasarlanmış olmalarına karşın Genel Amaçlı Yazmaçlarla aynı işlemlere kullanılabilirler.

Aritmetik, karşılaştırma ve bit işlemleri 16 bit ise AX, BX, CX, DX, SI, DI yazmaçlarıyla yapılabilir. Aynı işlemler 8 bit yapılacak ise AH, AL, BH, BL, CH, CL, DH, DL yazmaçları kullanılabilir
Kural 2 operandlı bir makina komutunun sonuçları her zaman soldaki operand bozularak onun içerisine yazılır. Tek operandlı makina komutunun sonuçları operand içerisindeki değer bozularak yazılmaktadır. Örneğin:

Add ax, bx

işleminde sonuç AX yazmacına yazılacaktır. Yada örneğin:

Add mem, ax

işleminde MEM ile belirtilen bellek bölgesindeki bilgi ile AX yazmacı içerisindeki bilgi toplanır sonuç MEM ile belirtilen bellek bölgesine yazılır. Yada örneğin

Inc ax

Sonuç operand üzerine yazılır

1.8 80386 ve Yukarı Modellerin Register Yapısı


80386’dan itibaren geçmişe uyum korunarak register’lar 32 bite yükseltilmiştir. 80386 ve sonraki modellerin pek çok register’ı vardır. Ancak bu register’ların çoğu korumalı mod ile ilgilidir. Bu modellerde asıl işlevsel olan register’lar 8086 işlemcisindekilerin genişletilmiş biçimleridir.

- Genel amaçlı register’lar uyum korunarak 4 byte’a yükseltilmiştir.



Bu durumda örneğin EAX register’ı bütün olarak EAX biçiminde 16 bit AX biçiminde ya da 8’er bitlik AL ve AH biçiminde kullanılabilir. Bu register’ların yüksek anlamlı 16 bitleri bağımsız olarak kullanılamamaktadır.

- Index register’lar da 32 bite yükseltilmiştir.



- Pointer register’lar da 32 bite yükseltilmiştir.



- Segment register’lar 16 bit olarak kalmıştır, FS ve GS isimli iki segment register daha eklenmiştir.




- Flag register 32 bite yükseltilerek EFLAGS ismini almıştır.
Platon isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Platon Kullanıcısına bu mesajı için teşekkür eden üyeler:
iLLéGaL (02-04-2008)
Alt 02-04-2008, 05:51 PM   #2
Kullanıcı Profili
Moderator
 
NonStop - ait Kullanıcı Resmi (Avatar)
Bilgiler
 
Üye No: 377
Üyelik tarihi: Dec 2007
Nerden: geLdim nereye Gideyim ?

Mesajlar: 324
Konular: 97
Ettiği Teşekkür: 17
22 Mesajına 29 Kere Teşekkür Edlidi

Tecrübe Puanı: 1
Rep Puanı : 255
Rep Seviyesi: NonStop has a spectacular aura aboutNonStop has a spectacular aura about
NonStop - MSN üzeri Mesaj gönder
tesekkurler

╚════════════════════════╦════╦═╝
║═╔═╗═╔═╗═════╔════╗═════║════║═║
║═║═║═║═║══════════║═════╚════╣═║
╠═╝═║═║═║═════╔════╣══════════║═║
║═══╚═╝═║═════║════║═════╚════╝═║
╔═══════╩═════╩════╩════════════╗
Hergün Bir Adım Daha Fark Atmaktayım
Bu Dünyaya.


NonStop isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Yeni Konu aç Cevapla
Tags:



Seçenekler
Stil

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ğil dir.

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


Bütün Zaman Ayarları WEZ olarak düzenlenmiştir. Şu Anki Saat: 03:45 PM .


Powered by KralForum
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
kralforum.
eXTReMe Tracker

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 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247