64'ler sayı 17, sayfa 33

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 33

ABSOLUTE ADRESLEME Her 3 register de bu çeşit adreslemeyi kıyas için kullanabilir. İşte her biri için örnek: C000 LDA #$00 C002 CMP $0286 C005 RTS

Cco00 LDX # $ 00 C002 CPX $ DO15 coo5 RTS

C000 LDY #$00 CPY $0291 C005 RTS Birinci örnekte A registerini $0286 bölgesi ile mukayese ediyor. İkinci örnekte X registeri sprite enable flagın kontrol edildiği $D015 bölgesi ile mukayese ediliyor. Sonuncu programda ise Y registeri $0291 bölgesi ile mukayese ediliyor.

ABSOLUTE İNDEXLİ ADRESLEME Sadece A registeri bu tip adresleme kullanarak kıyas yapar. X registeri aşağıdaki örnekte de görüldüğü gibi index olarak kullanılır: C000 LDX #$77 C002 LDA #$64 C004 CMP $0200,X C007 RTS Yukarıdaki örnek A registerini keyboard buffer'ın ilk bölgesi ($0277) ile mukayese eder. Y registeri de index olarak kullanılabilir.

İNDEXLİ DOLAYLI ADRESLEME Bu adresleme için sadece A registeri kullanılabilir. Aynı zamanda sadece X registeri index olarak kullanılabilir. İşte X registerinin bir index olarak kullanıldığını görebileceğiniz örnek bir program: C000 LDY #$0D C002 STY $FB C004 LDY #$03 STY $FC C008 LDX #$1B C00A LDA #$20 C00C CMP ($E0,X) C00E RTS

Y registerini $0D ile yükler. C002: Y registerini FB bölgesine depolar. C004: Y registerini $03 ile yükler. Y registeri FC bölgesine depolanır. C008: X registerini $1B ile yükler. C00A: A registerini $20 ile yükler. C00C: Kompüter FB bölgesinden LOW byte ve FC bölgesinden HI byte alır ve $030D adresini oluşturur ve bu adresteki değeri A registeri ile mukayese eder. C00E: Kompüteri BASIC'e döndürür.

DOLAYLI İNDEXLİ ADRESLEME Sadece A registeri bu tip adresle mukayesede kullanılabilir. Bu defa Y registeri index olarak kullanılmıştır: C000 LDX #$00 C002 STX $FD C004 LDX #$04 C006 STX $FE C008 LDY #$09 C00A LDA #$10 C00C CMP ($FD),Y C00E RTS

C000: X registerini $00 ile yükler. C002: X registerini FD bölgesinde depolar. C004: X registerini $04 ile yükler. C006: X registeri FE bölgesinde depolanır. Y registerini $09 ile yükler. C00A: A registerini $10 ile yükler. C00C: Kompüter FD bölgesinden aldığı LOW byte ve FE bölgesinden aldığı HI byte ile $0400 adresini oluşturur. Sonra adrese Y registerinin değerini ilave eder. Neticede $0409 olur. Sonra A registeri ile $0409 bölgesindeki değer karşılaştırılır.

Bu konunun son programı idi, şimdi bir problem.

A registeri bilinmeyen bir değere sahiptir. 34 sayısı ile mukayese edildiğinde Carry flag set, 55 sayısı ile mukayese edildiğinde Negatif flag set olmaktadır. Aşağıdaki cevaplardan birini seçiniz: A. — A registerinin değeri 34'ten küçük. B. — A registerinin değeri 35-54 arası. C. — A registerinin değeri 55'ten büyük. Cevap B'dir. Eğer cevabı anlıyamadıysan son iki sayfayı yeniden okumadan gelecek bölüme geçme.

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