64'ler sayı 33, sayfa 72

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 72

ASSEMBLER

mutlarının üç büyüklükte olması, DA-TA registerlarının üç ayrı büyüklükte kullanılmasını sağlar. Bu büyüklükler, byte(8 — bit), word(16 — bit) ve longword(32 bit)'dur. ADRES REGİSTERLERİ : âdres registerleri de sekiz adettir ve A0'dan A7'ye kadar sıralanırlar. a0'dan a6'ya kadar olan yedi register birbirlerinden bağımsızdırlar ve hepsi aynı şekilde görev yaparlar. Bu registerlerin dışında kalan A7 registeri ise bir tür stack registeri görevini görür. Yani a7 registeri bir anlamda 3. türe girer.Bu registerlerde 32 bitliktir ve aynı DATA registerleri gibi büyüklük olarak üç türde kullanılabilir. Bu registerler hafıza bölgelerini işaretleme ve bu bölgeler arasında transfer yapabilmede sağladığı kolaylıklar bakımından çok önemlidir. Bu arada biraz da A7 registerinden söz edelim. Aslında 68000 stack register olarak a7 registerini kullanmaktadır. Stack dediğimiz olay,bazı verilerin,pa- Tametrelerin ya da bazı konfigürasyonların saklandığı bellek alanıdır. Sistemimizde kullanılan bir de (sp) dediğimiz stack pointeri vardır. Fakat bu aşağıda anlatılmıştır. STACK REGİSTERİ 68000 microchip'inin 8 adet adres registeri kullandığını biliyoruz. Bunlardan A7 biraz önce söylediğimiz gibi stack pointer olarak kullanılır. Sistemin kullandığı ikinci stack pointeri sp'dir. Stack Pointer'ın görevi, AMIGA'nın en önemli özelliklerinden olan MUL-TITASKING özelliğini kullanmamızı sağlar. Stack Pointer'ları bazı mikro işlemcilerin komut setlerinde bulunan PUSH ve POP operasyonlarını yapmamıza yarar. Bu operasyonları stack pointerine registerlerin MOVE edilmesi ya da Stack Pointer'in registerlere MOVE edilmesiyle yapabiliriz.

tack register'i iki şekilde

1/ User privilege state Bu durumda stack pointer sadece sistem kullanıcısının emri altındadır. Stack Pointer genellikle bu durumda kullanılır. II/ Supervisor privilege state : Bu durumda stack pointer kısmen sistem tarafından kontrol edilir. Bu durum çok ender kullanılır. 68000 mikro işlemcisinin dışında bir çok mikro işlemci assemblerleri SP registerini stack pointer registeri olarak kabul eder. SP'nin iki türünün kısaltılmış ismi USP (User stack pointer) ve SSP (Supervisor stack pointer)'dir. Fakat stack pointer olarak genellikle A7 registeri kullanılır. Çünkü A7 registeri istenen herhangi bir anda sistem tarafından aktif olup olmama konusunda kontrol edilir. Ayrıca USP ve SSP assembler source'unda stack operasyonları olarak kullanılmazlar. DURUM KODU REGİSTERİ 68000'in kullandığı bu register 16 bitlik bir registerdir. Registerin 16 bitinin de kullanılması söz konusu değildir. Bu bitlerden bir kısmı 68000'e sonradan yapılacak eklemelerde kullanılmak üzere ayrılmıştır. Zaten çoğunluğu da 68000'den daha güçlü bir yapıda olan 68020 mikro işlemcisi tarafından kullanılır. Durum kodu registerinin yapısı TAB-LO 1'de verilmiştir. Şimdi bu bitleri tek tek açıklıyoruz. Bu bitlerden boş olanları ileri kullanım alanları için , 15-8 arası bitler sistem için, 7-0 arası bitler kullanıcı için ayrılmıştır. Trace Modu (T/15.bit) Bu bitin 1 değerini alması sistemin Trace modunda olduğunu gösterir. Trace modu herhangi bir programın ardında n hemen başka bir programın çalıştırılmasını sağlar. (BASIC'te gördüğünüz Trace ON/OFF menüsünün yaptığı işler Trace modunun aktivitelerinden birisidir. ) Supervisor Modu (S/14.bit) Bu bitin 1 olması sistemin Supervisor durumunda olduğunu gösterir. Eğer sistem Supervisor durumundaysa Merkezi işlem birimi kullanıcı modunda kullanılamayan bazı komutları kullanabiliriz. Bu komutlar RESET , STOP ve RTE komutlarıdır. Interrupt MASK (12,11,10/10,9,8.bitler) Bu bitler sistemin o anda hangi tür interrupt kullandığını belirtir. Bu bitler hakkında ileriki sayılarımızda daha geniş bilgiler bulabilirsiniz. Extend Flag (X/4.bit) Bu bit operasyonların büyüklük parametrelerini belirler. Bu bit 68000 mikro işlemcinin önemli özelliklerinden birisini gösterir. Bu bit olmasa mecburen tüm işlemlerimizi 32 bit bazında yapacaktık, bu da önemli ölçüde zaman kaybına neden olacaktı. Carry Flag (C/0.bit) Bu bit Commodore 64'ten de tanıdığımız Carry bitinin görevini üstlenmiştir. Ayrıca daha sonra göreceğimiz Shift işlemlerinde de kullanılır. Overflow Flag(V/1.bit) Bu bit sistem içinde oluşan bazı overflow yani aşırı yüklenmelerin belirlenmesinde kullanılır. Bu bit aynı Carry flag'ta olduğu gibi bir çok Shift operasyonundan etkilenir. Zero Flag(Z/2.bit) Zero flag eskiden Commdore 64'te assembler çalışan zavallılar bilirler. Yapılan bir operasyonun sonucunda işlem sıfır çıkarsa bu flag 1 değerini alir. Eğer işlem 0'dan farklı olursa bu flag 0 değerini alır. Çıkan değerin negatif olup olmadığını anlamak için negative flag kontrol edilir. Negative Flag(N/3.bit) Biraz önce değindiğimiz operasyonların sonuçlarının negatif değerlerinin incelendiği bit'e Negative Flag denir. Genellikle bir önceki bitimiz olan Zero FHlag'la birlikte kullanılır. Program sayacı (PC) Program counter yani program registe- Ti 32 bitlik bir registerdir. Fakat sadece 24 adet bit chipin dışına itilebilir. Ancak PC'nin 32 biti de çalışır ve PC üzerindeki operasyonlardan etkilenirler. Bu registerin ilk 8 biti 68000 tarafından kullanılır.Bu yüzden bu ilk 8 bit sistem tarafından göz önüne alınmazlar. Jump,Branch gibi emirler bu registeri etkiler. Eğer PC'yi herhangi bir şekilde okumak isterseniz LEA komutuyla bir sonraki adres registerine yükleyerek değerini bulabilirsiniz. Böylece 68000 microchip'inin register tablosunu tam olarak vermiş olduk. ADRESLEME MODLARI Bu bölümde 68000'in 14 adet olan adresleme modlarında sizlere en yararlı olabilecekleri vereceğiz. Bu çeşitli adresleme modları 68000'in gücünü ortaya çıkaran nesnelerdir. Eğer AMIGA

Klavyeyle gezinmek için ← ve → tuşları.