Bu sayfadaki yazılar
Sayfanın metni
Sayfa 19
INCREMENT, DECREMENT VE TRANSFER (Arttırma, Azaltma ve Transfer)
3 tane registere sahip olma bazen güçlükler çıkarır. Registerin birini diğerine transferle bu güçlüğü yenebiliriz. Mesela A registerinde kaybetmek istemediğimiz bir değer var ve aynı zamanda A registerini başka maksatla kullanmak istiyoruz, bunun değerini X registerine transfer edebiliriz. Bunu TAX komutunu kullanarak yaparız ki, A'yı X'e transfer et anlamına gelir. A registerindeki değer kullanıldıktan sonra X registerindeki değeri eski yerine, A registerine geri transfer edebiliriz. Bunu TXA (X'ten A'ya transfer) komutuyla yapabiliriz. Bu örnekte A registeri kullanılıyor ve en sonunda başlangıçtaki değerini alıyor: C000 TAX LDA C003 STA $D020 C006 TXA C007 RTS C000: A registerindeki değeri X registerine transfer et. C001: A registerine 00 koy (sil, sıfırla) C003: A registerini $D020 bölgesine yükle (bordür rengi siyah olacak) C006: A'nın orijinal değerini A registerine geri yükle. Keza Y registeride TYA (Y'den A'ya transfer) ve TAY (A'yı Y'ye transfer) şeklinde kullanılabilirdi.
INX VE INY INX, X registerini arttır demektir. X registerine 01 ilave et demektir. INY, Y registerini arttır demektir. Y registerine 01 ilave et anlamına gelir. İşte her biri için birer örnek: C000 LDX #$01 C002 INX C003 RTS
CO00 LDY #$ 08 C002 INY RTS Birinci örnekte X registeri 01'den 02'ye değeri artar. İkinci örnekte Y registerinin değeri 08'den 09'a artar.
INCREMENT Hafızada, registerler gibi arttırılabilirler. Bunun için INC (Increment memory) komutu kullanılır.
ZERO PAGE ADDRESSING "INC $45" Zero Page için bir örnektir. Aşağıdaki programda FB bölgesi 04'e eşittir ve değeri 05'e artar. C000 LDA #$04 C002 STA $FB C004 INC $FB C006 RTS Bunun çalışıp çalışmadığını öğrenmek için ana menüdeki 4 nolu seçeneği kullanın.
Dr. Ali Özçelik
ZERO PAGE INDEXED Bu şekil adresleme için INC komutu X registerini index olarak kullanır. Örnek olarak 'INC $97,X' verebiliriz ki, bu komut 97+X bölgesini arttırır. Aşağıdaki program 9A bölgesindeki 44 değerini 45'e arttırır: C000 LDA #$44 C002 STA $9A C004 LDX #$03 INC $97,X C008 RTS Yine ana menünün 4.cü seçeneğiyle bu programı da kontrol edebilirsin.
ABSOLUTE ADDRESSING Bu komut ile hafızadaki her bölgeyi arttırabilirsin. Bu program her çalıştırıldığında (execute) bordür rengi de değişecek, çünkü $D020 bölgesi bordür rengini ihtiva eder. C000 INC $D020 RTS
ABSOLUTE INDEXED ADDRESSING Yine X registeri index olarak kullanılır. Aşağıdaki program komutun özelliklerini gösterecek: LDA #$FF C002 STA $07F8 C005 INC $07F8 RTS Eğer ana menüdeki 4.cü seçeneği kullanırsan, arttırmanın sonunda 00 göreceksin. Bu önemli noktayı hatırlayın. Hafızanın herhangi bir bölgesi veya registeri FF değerine sahipse, arttırıldıktan sonra 00 değerine sahiptir.
DEX VE DEY DEX, X registerinden bir eksilt (01) çıkar demektir.
DEY, Y registerinden bir eksilt (01) çıkar
Klavyeyle gezinmek için ← ve → tuşları.