010011 10 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 —I5 değeri kalmıştı: lll * O011 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 se- fer 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şaretle- rin 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 al- mış 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 bu- lunmaktadır ve amaca uygun olarak değiştirilebilir. İndeksli adresleme: İndekslemek, herhangi bir şeyin alt gruplarındaki elemanlara ayırtedici işaretler (sayı veya harf) tekabül et- tirmek demektir. Örneğin matema- tikte ikinci dereceden bir denklemin sonuçları genellikle X1 ve X2 olarak adlandırılır. Buradaki rakamlar (ya- 22 “I-:._-_ ni | ve 2) indekstir ve X indekslen- miş 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 ad- resleme adı verilir. LDA'nın çok iyi biliyoruz: Akümülatörü yük- le. Peki burada akümülatöre yükle- necek değer nereden alınacak? He- men söyleyelim: $1500 artı X- Registerinin o anki değerinin belirt- tiği adresden. X-Registerinin de- ğen 5 ise $1500 4 $05 — $1505 adresi- ıım değeri akümülatöre yüklenecek- Bıldığımn 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 Y-Regis- terinde de indeksli adresleme yapıla- bilir: LDX $1500,Y Bu yönteme mutlak Y- indeksli ad- resleme adı verilir. Yine mutlak adreslemede olduğu gibi 8-Bit'lik bir adres kullanarak “ fırıncı sayfa indeksli adresleme”' ya- STX $19,Y Yalnız sıfırıncı sayfa 255 bayt uzunluğunda olduğu için dikkat edil- mezse 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 adresinin içerdiği değeri akümülatöre yükler. Şimdi son öğrendiğimiz dört adres- leme yöntemini kısaca özetleyelim: Mutlak X-İndeksli: Örneğin LDA $1500,X Mutlak Y-İndeksli: Örneğin LDA $1500 Sıfmncı Sayfa X-İndeksli: Örneğin LDA $2B, Sıfınııcı Sayfa. Y-İndeksli: Örneğin LDA $2B,Y Bu adresleme yöntemlerinin han- gi komutlarla kullanılıp kullanılma- yacağı Resim 1'de gösterilmiştir. Şimdi ele almadığımız iki indeksleme adresleme ydntemıı:ıı ileriki bölümler- de incel Yeni Komutlar: BIT, CLV, MOP ve TAX, TAY, TXA, Kursumuzda şu ana kadar anlatı- lan konuların hiçbirinin içeriğine doğruya dahil olmayan, fa- kat makine dilinde sık sık kullanılan bazı komutları şimdi inceleyeceğiz: BIT: Bu komut “Bit-Test” anlamına tığımız karşılaştırma komutları ile de bazı yönlerden benzeşmektedir. Ör- nek olarak şu satıra bakalım: BIT $1500 Burada şunlar gerçekleşir: $1500 adresinin içerdiği değer ile akümüla- törün değeri AND (ve) mantıksal iş- lemi ile birleştirilir. Bu işlem sonu- cunda 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 ü—ü OANDİSZSÜ 1 ANDÜ-—Ü 1ANDİSİ Yani akümülatörde ve $1500 adre- sinde birbirine karşı gelen Bit'ler | ise AND bağıntısının sonucu da |1'dir. Resim_Z'de AND'in doğruluk tablo- su iştir. AND — | 0 0 0 0 l 0 1 Resim 2: Doğruluk tablosu: