Commodore sayı 48, sayfa 22

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 22

01001101

01001110

01001111

değerimiz olan desimal 52 $34'e (4 rakamının kodu) ulaştık. Carry Bit'i bu işlemler sonucunda silinmiştir. İkinci örnekte ise akümülatörde —15 değeri kalmıştı: 1111 0001 4 0011 0000

(1)0011 0001 Sonuçta yine başlangıç değerimize dönmüş olduk ($21— 33— Tırnak işaretinin ASCII kodu), yalnız bu sefer Carry Bit'i 1 değerini almıştır. Şimdi CHRGET rutininden elde ettiğimiz sonuçları sıralayalım: 1. SPACE dışındaki tüm işaretlerin kodu bu rutini çağıran programa akümülatör aracılığı ile gönderilir. SPACE'e basıldığında bilgisayar başka bir işaret bekler. 2. Rakamlar dışındaki diğer tüm işaretlerde Carry Bit'i 1 değerini almış olur. 3. Carry Bit'inden başka Z- ve N- Bayrakları da basılan tuş hakkında bazı bilgiler verirler. CHRGET rutiniyle birlikte C-64'ün işletim sistemindeki çok önemli bir alt programı da tanımış olduk. Örneğin İnterpreter programları devamlı olarak bu rutini kullanmaktadırlar. Ayrıca CHRGET rutini RAM'da bulunmaktadır ve amaca uygun olarak değiştirilebilir.

İndeksli adresleme:

İndekslemek, herhangi bir şeyin alt gruplarındaki elemanlara ayırt edici işaretler (sayı veya harf) tekabül ettirmek demektir. Örneğin matematikte ikinci dereceden bir denklemin sonuçları genellikle X1 ve X2 olarak adlandırılır. Buradaki rakamlar (yani 1 ve 2) indekstir ve X indekslenmiş bir büyüklüktür. Makine dili programcılığında da indeksli adresleme fonksiyonunu aynı şekilde kabul edebiliriz. Örnek olarak aşağıdaki komutu ele alalım: LDA $1500,X

Bu yönteme mutlak X-indeksli adresleme adı verilir. LDA'nın anlamını çok iyi biliyoruz: Akümülatörü yükle. Peki burada akümülatöre yüklenecek değer nereden alınacak? Hemen söyleyelim: $1500 artı X-Registerinin o anki değerinin belirttiği adresten. Eğer X-Registerinin değeri 5 ise $1500 + $05 = $1505 adresinin değeri akümülatöre yüklenecektir. X-Registeri $00-$FF arası sayıları kapsayabilmektedir. Dolayısıyla indeksli adresleme ile 256 adreslik bir alandan istenen adres seçilip işleme konulabilir. X-Registerinde de olduğu gibi Y-Registerinde de indeksli adresleme yapılabilir: LDX $1500,Y Bu yönteme mutlak Y-indeksli adresleme adı verilir. Yine mutlak adreslemede olduğu gibi 8-Bit'lik bir adres kullanarak “sıfırıncı sayfa” indeksli yapılabilir: LDY $2B,X veya STX $19,Y Yalnız sıfırıncı sayfa 255 bayt uzunluğunda olduğu için dikkat edilmezse bu sayfanın dışına taşmalar olabilir. Örneğin, LDA $FE,X komutunda X-Registerinin değeri 2 olursa sonuç $FE+$02=$0100 olur. Bu durumda C-64 $0100 adresi yerine $00 adresi yerine $00 adresinin içerdiği değeri akümülatöre yükler. Şimdi son öğrendiğimiz dört adresleme yöntemini kısaca özetleyelim: Mutlak X-İndeksli: Örneğin LDA $1500,X Mutlak Y-İndeksli: Örneğin LDA $1500,Y Sıfırıncı Sayfa X-İndeksli: Örneğin LDA $2B,X Sıfırıncı Sayfa Y-İndeksli: Örneğin LDA $2B,Y Bu adresleme yöntemlerinin hangi komutlarla kullanılıp kullanılmayacağı Resim 1'de gösterilmiştir. Şimdi ele almadığımız iki indeksleme adresleme yöntemini ileriki bölümlerde inceleyeceğiz.

Yeni Komutlar: BIT, CLV, NOP ve TAX, TAY, TXA, TYA

Kursumuzda şu ana kadar anlatılan konuların hiçbirinin içeriğine doğrudan doğruya dahil olmayan, fakat makine dilinde sık sık kullanılan bazı komutları şimdi inceleyeceğiz: BIT: Bu komut “Bit-Test” anlamına gelmektedir. Aslında geçen ay anlattığımız karşılaştırma komutları ile de bazı yönlerden benzeşmektedir. Örnek olarak şu satıra bakalım: BIT $1500 Burada şunlar gerçekleşir: $1500 adresinin içerdiği değer ile akümülatörün değeri AND (ve) mantıksal işlemi ile birleştirilir. Bu işlem sonucunda N-, V- ve Z- Bayrakları değişikliğe uğrarken akümülatör ve $1500 adresinin değeri değişmez. Bu son satırlarda anlatılanlar biraz karışık gelebilir. Onun için her şeyi adım adım inceleyeceğiz. Öncelikle AND (ve) bağlantısına bakalım. Şu kurallar geçerlidir: 0 AND 0=0 0 AND 1=0 1 AND 0=0 1 AND 1=1 Yani akümülatörde ve $1500 adresinde birbirine karşı gelen Bit'ler 1 ise AND bağıntısının sonucu da 1'dir. Resim 2'de AND'in doğruluk tablo-

AND 0 1 o o o 1 o 1

Resim 2: Doğruluk tablosu:

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