Bu sayfadaki yazılar
Sayfanın metni
Sayfa 8
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 9
Bu sayıdan itibaren 6510 işlemcisinin registerlerini, adresleme modlarını, şartlı dallanma ve alt program nedir gibi konuları göreceğiz.
REGİSTERLER Makine dili komutları her biri basit aritmetiksel, mantıksal, taşıma veya şartlı dallanma işlemi yapan bir baytlık kodlardan oluşur. Bu kodu komutun çeşidine göre bir başka kod veya o koda ait 1 veya 2 baytlık bir parametre (sabit sayı veya adres) izler.
Komutlara başlamadan önce 6510'un registerlerini bilmemiz gerekmektedir. Çünkü registerleri bilmeden komutlara tam anlamı ile hakim olamazsınız. Peki register ne demektir? Registerin kelime olarak karşılığı kaydedici demektir. Mikroişlemcilerde ise registerler mikroişlemci içinde bulunan işlem yapan birimlerdir. Makina dili komutları aslında çok ilkeldir. Çeşitli programlama dillerindeki gibi değişkenler, karmaşık işlemleri kolayca gerçekleştiren aritmetiksel işlemler veya INPUT, PRINT vs. komutlar yoktur. Ekrana basit bir "A" harfi yazmak için bile hangi registerlerin/adreslerin kullanıldığını, karakterlerin ASCII kodlarını ve bir de C64’e özel çeşitli renk, kursör kodlarını vs. bilmeniz gerekmektedir. Bu nedenle C64’ün bellek haritası ile ASCII kodları elinizin altında olmalıdır. Bir makina dili komutu her seferinde sadece tek bir iş yapar. Komutların başlıca görevlerini aşağıdaki gibi sınıflandırabiliriz.
1. Bir bellek adresinin değerini değiştirmek (arttırmak, azaltmak vs.) veya bir adresin değerini başka bir adrese kopyalamak. 2. Bir baytlık bir sayı üzerinde basit aritmetik veya mantık işlemleri yapmak. 3. Program akışı içinde şartlı veya doğrudan başka bir adrese dallanmak. Bütün bu işlemleri 6510'un registerleri yapar. Registerleri bir çeşit taşıyıcı olarak düşünebilirsiniz. 6510'un registerleri A, X, Y, ST, PC, SP, ve I/O port'udur. Şimdi bunları sırayla görelim: 1. A (Akümülatör) : Mikroişlemcinin en önemli registeridir. Çeşitli komutlar kullanarak aküdeki bilgiyi başka bir adrese, registere veya yığına atabilir, buralardaki bilgiyi aküye yükleyebilirsiniz. Akünün en büyük özelliği aritmetiksel ve mantıksal işlemleri yapabilen tek register olmasıdır. 2. X (X index registeri) : X registerindeki bilgiyi aküye, herhangi bir adrese veya SP’ye atabilir, buralardaki bilgiyi X’e yükleyebilirsiniz. X registerini kullanarak döngü kurabilirsiniz. Ayrıca sadece X registeri kullanılarak yapılan işlemler de vardır. 3. Y (Y index registeri) : Y registerindeki bilgiyi aküye, herhangi bir adrese atabilir, buralardaki bilgiyi Y’ye yükleyebilirsiniz. Y registerini kullanarak döngü kurabilirsiniz. Ayrıca sadece Y registeri kullanılarak yapılan işlemler de vardır.
4. ST (STATUS -durum- registeri) : Bu registerin diğer registerlerden oldukça farklı bir işlevi vardır. ST registerini oluşturan 8 bitin her birinin bir görevi vardır ve mikroişlemcinin o anki işlediği komuta göre çeşitli durumları evet/hayır gibi gösteren birer bayrak (flag) olarak kullanılır. Statü registerinin bitleri "0" veya "1" olmalarına göre aşağıdaki durumlarla ilgili bilgileri verir.
BİT NO 7 6 5 4 3 2 1 0 FLAGLAR N V - B D I Z C
BİT AÇIKLAMA 7 N : (Negatif) Bir önceki işlemin sonucu negatif mi? 6 V : (Overflow) Bir önceki işlemin sonucu 127'den büyük mü? 5 Boş. Her zaman "1" dir. 4 B : (Break) Program kesintiye uğramış mı? 3 D : (Decimal) İşlemci desimal (onlu) işlem modunda mı? 2 I : (Interrupt) İnterrupt durdurulmuş mu? 1 Z : (Zero) Bir önceki işlemin sonucu "0" mı? 0 C : (Carry) Bir önceki toplama, çıkarma veya karşılaştırma işleminde elde var mı?