Bellek ve Mikroişlemci
    Mikroişlemci tabanlı sistemlerdeki adres alanı mantıksal yada fiziksel bellek olarak gösterilir. Mantıksal bellek yapısı fiziksel bellek yapısından birçok açıdan farklıdır. Mantıksal bellek programcı tarafından görülen bellek alanı olarak tanımlanırken fiziksel bellek , bellek sisteminin donanımsal yapısını oluşturur.

Mantıksal bellek:
   Mantıksal bellek alanı tüm intel ailesi işlemciler için temelde aynıdır. Mantıksal bellek byte ile numaralanır.Aşağıdaki şekil tüm intel ailesi işlemciler için bellek haritasını verir. Şekilde görüldüğü gibi tek fark bazı işlemcilerin daha fazla bellek içermesidir. Ayrıca bazı sistemlerde fiziksel bellek mantıksal bellekten farklılıklar gösterebilir.

mib1.gif (4218 bytes)

    8086,8088 ve 80186'da mantıksal bellek 00000H adresinden başlayarak FFFFFH adresine kadar devam eder. Bu sınırlar 1 megabyte'lık belleği kullanılabilir kılar. 80286 ve 80386SX' de mantıksal bellek alanı 000000H dan başlayarak FFFFFFH' a kadar uzanır , böylece bu sistemlerde 16 M bellek kullanılabilmektedir. 80386SL ise 0000000H'dan başlayıp 1FFFFFFH'a kadar devam ederek 32M ve son olarak 80386DX , 80386SX , 80486 00000000H'dan başlayıp FFFFFFFFH'a kadar uzanan adresleri ile 4 gigabyte adresleyebilmektedirler.

Fiziksel bellek:
   Intel ailesinde fiziksel bellek genişliği farklılıklar gösterir. 8088 belleği 8 bit genişliğinde , 8086 , 80186 , 80286 , 80386SX 16 bit genişliğinde ve 80386DX , 80486 32 bit genişliğindedir. Programlama açısından fiziksel bellek genişliğinin pek önemi yoktur çünkü mantıksal bellek tüm işlemcilerde 8 bit genişliğindedir. Donanımdaki farkı ile aşağıdaki şekil ile görebilirsiniz.

mib2.gif (2968 bytes)

mib3.gif (3461 bytes)

    Tek banktan oluşan 8088 dışında tüm intel ailesi işlemcilerinde bellek banklar içinde organize edilmişlerdir. Bellek bank'ı belleğin 8 bit genişliğindeki bölümüdür. 16 bit işlemciler 16 bitlik bellek genişliği sağlamak için iki bellek bank'ı kullanır ve byte'lar ve word'ler adreslenir. 32 bit işlemciler ise 4 bellek bank'ı kullanarak byte , word ve double word adresleyebilirler.

Kişisel bilgisayarda bellek:
   Intel ailesi üzeriden yapılacak bir çalışma kişisel bilgisayardaki bellek yapısını anlamayı gerektirir. Çünkü kişisel bilgisayarlar 1 megabyte'lık ana bellek düşünülerek üretilmiş 8088 temellidirler. Bu ana bellek genellikle gerçek bellek (real memory) olarak adlandırılır. Bellek genişlemeleri LIM'in (Lotus-Intel-microsoft) geliştirdiği EMS (Expanded Memory Structure) standardından önce mümkün olmuyordu.

Aşağıdaki şekil kişisel bilgisayarlardaki bellek haritasını göstermektedir.

mib4.gif (2076 bytes)

    İlk 640K'lık bellek alanı bütün kişisel bilgisayarlarda TPA (transient program area) olarak adlandırılır. TPA işletim sistemi ve I/O aygıtları için controlleri içerir. TPA'dan sonraki alanda sistemi kontrol için BIOS memory bulunur. İlk 1M üstü bellek ise extendend memory'dir ve disk caching programlari ve işletim sistemi tarafından tanımlanan diğer data segmentlerini içerir.

Programlama modeli
    Programlama Intel ailesi işlemcilerin iç register yapısını iyice anlamayı gerektirir. Bu bölümde mikroişlemcinin register yapısı ve belleğin segment ve offset register'ları ile adreslenmesi anlatılacaktır.

Genel amaçlı register'lar:
   Genel amaçlı registerlar programcının isteği doğrultusunde kullanılabilir. Aşağıda genel amaçlı register'ların ana görevleri verilmiştir.

AX(Accumulator): Genellikle aritmetik ve lojik işlemleri sonuçlarını tutar.

BX(Base ): Bellekte adreslenmiş verinin base adresini tutar.

CX(Count): Döngü işlemlerinde sayaç olarak kullanılır.

DX(Data): 32 veya 16 bitlik çarpma işlemlerinden sonra sonucun en değerli bölümünü tutar.

Pointer ve Index Register'ları:
   Pointer ve index register'lar da aslında genel amaçlı register'lardır ve bellek bölgesini indexler yada gösterirler. Bu registerlar ;

SP(Stack Pointer): LIFO (last in first out) yığınında veriyi adreslemek için kullanılır. Bu genellikle PUSH ve POP komutları çalıştığında gerçekleşir. 32 bitliği ESP register'ıdır.

BP(Base Pointer): Yığın bellekteki veri dizisini adreslemek için kullanılır.

SI (Source Index): String işlemlerinde kaynak veriyi dolaylı olarak adreslerken kullanılır.

DI(Destination Index): String işlemlerinde hedef veriyi dolaylı olarak kullanmak için kullanılır.

IP(Instruction Pointer): İşlemci tarafından çalıştırılacak diğer komutun adresini tutar. Diğer komutun adresi IP içeriğini CSx10 ' ile toplayarak bulunur.

Flag Register'ları
   Flag'lar cpu'nun işlemindeki şartları belirler. Flag bitleri aritmetik ve lojik işlemler sonucu değişikliğe uğrarlar. Aşağıda flag'lerin listesi ve fonksiyonları verilmiştir.

C (Carry): Toplama işlemindeki elde yada çıkarma işlemindeki ödünç almayı belirtir. Carry bayrağı ayrıca bazı program ve prosedürlerde hatayı belirtir.

P (Parity): Bu flag tek parity için lojik 0 ve çift parity için lojik 1 alır. Parity sayıdaki 1'lerin adedidir. Örneğin eğer sayı 3 binary bir biti içerirse tek paritydir .

A (Auxiliary Carry): Sonucun 3 ve 4. pozisyonları için toplamadan sonra eldeyi , çıkarmadan sonra ödünçü tutar.

Z (Zero): Aritmetik yada lojik işlemin sonucunun sifır olduğu bilgisini tutar.

S (Sign): Toplama yada çıkarmadan sonra sonucun işaretini tutar.

T (Trap): chip debugging de tuzaklamayı sağlar (istenmeyen bir durum ile karşılaşılınca yürütülen komutun kesilmesi gibi işlemlere tuzak (trap) denir.

I (Interrupt): INTR input pin' inin işlemlerini kontrol eder. Eğer I 1 ise INTR (Interrupt Request) kullanılabilir , 0 ile kullanılamaz.

D (Direction): String işlemleri sırasında DI veya SI'daki artış veya düşüş seçimini kontrol eder.

O (Overflow): İşaretli sayılar toplandığı yada çıkarıdığı zaman oluşur.

NT (Nested Task): Korumalı kip işlemlerinde bir görev içinde başka bir görevin tanımlandığı durumları içerir.

Ayrıca RF (Resume) , VM (Virtual Mode) ve AC (Alignment check) flagleri de mevcuttur.

Segment Register'ları:
CS (code): Code segment , programların ve diğer programlar tarafından kullanılan procedure'lerin tutulduğu bellek bölümüdür.

DS (data): Programlar tarafından kullanılan verilerin tutulduğu bellek bölümüdür.

ES (extra): Bazı string komutları tarafından kullanılan ek bir veri segmentidir.

SS (stack): Yığın için kullanılacak bellek alanını tanımlayan segmenttir.

 

-----------------------------____________________-------------------------------____________________------------------------

 

BİLGİSAYAR VE ROBOT..... bölümüne gitmek için tılayın !!!1

--------------------------------------------------------------------------------------------------------- 

Ana sayfa