64'ler sayı 15, sayfa 27

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 27

Co00 LDY #$ Fo C002 LDA #$ 21 CO04 STA $ 0400.Y

C007 RTS Birinci program ekranın sol üst köşesine, ikinci program ekranın sağ üst köşesine karakter depolar. İkiside çalışır çünki ekran hafızası 0400 bölgesinden başlar. INDEXED ADDRESSING Bu adresleme şeklinide sadece A registeri kullanabilir. Giriş olarak örneğimiz “STA ($32,X)' olsun. Bu girişte X=14 ise, LOW byte 46 bölgesindeki değer (32+14=46) ve HI byte 47 bölgesindeki değer olacaktır. Bundan sonra kompüter A registerini bu bölgede depolayacaktır. İşte örnek program: C000 LDX #$21 C002 STX $FB C004 LDX #$D0 C006 STX $FC C008 LDA #$00 C00A LDX #$01 C00C STA ($FB,X) C00E RTS Bu Assembly programını RUN ettiğin zaman zemin rengi değişecektir. X registerini LOW byte ile yükler. C002: LOW byte, FB bölgesinde saklanır. C004: X registeri HI byte ile yüklenir. C006: HI byte FC bölgesinde saklanır. C008: A registeri 00 ile yüklenir. C00A: X registeri 01 ile yüklenir. C00C: Kompüter LOW byte FB (FA+X) bölgesinden alır, sonra HI byte FC (FB+X+1) bölgesinden alır. Kompüterde D021 adresi oluşur ki bu zemin rengini tutan yerdir. Sonra A registeri rengi değiştirmek için oraya yüklenir, renk siyaha değişir. INDIRECT INDEXED ADDRESSING Bu şekil adreslemeyi yalnız A registeri kullanır. Bu şekil bir önceki adreslemeye benzer, sadece Y registerini index olarak kullanır ve Y registerini adres oluştuktan sonra ilave eder, önce değil.

İşte size ekranın sol üst köşesine karakter depolayan gösteri programı: LDX #$28 STX $FB C004 LDX #$04 C006 STX $FC LDY #$28 C00A LDA #$23 C00C STA ($FB),Y C00E RTS C000: Bu X registerini LOW byte'la yükler. C002: LOW byte FB bölgesinde şimdi depolandı. Şimdi X registeri HI byte'la yüklendi. HI byte FC bölgesinde depolandı. C008: Şimdi Y registeri (index) 28 ile yüklendi. C00A: A registeri 23 ile yüklendi. C00C: Kompüter LOW byte'ı FB, HI byte'ı FC bölgesinden alır. Sonra 0400. adres şekli oluşur, sonra Y ile toplanır ve 0428 olur. A registeri bu adrese saklanır. Bordür rengi D020 ve zemin rengi D021 bölgesinde kontrol edilir. Bu en son saklama komutu idi, öbür konuya geçmeden önce bir test vereceğim. İşte problem: Bordür rengini zemin rengine çeviren bir program yapabilir misin? Cevap: C000 LDA $D021 STA $D020 C006 RTS Yukarıdaki çözüm tek cevap değildir, X ve Y registerleriyle de aynı şeyi yapabilirdik. Cevabınız yüz güldürüyorsa gelecek sayıyı okuyun. Eğer çalışmıyorsa bu sayıyı tekrar çalışmanızı tavsiye ederim.

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