64'ler sayı 17, sayfa 32

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 32

MUKAYESE (COMPARE) KOMUTLARI

Bu bölüme başlamadan önce assembler programına ilave etmeniz gerekiyor: Bunları yazdıktan sonra tekrar SAVE et. Bu satırlar P registerinin değerini bulacak ve her flag'- ın değerini yazacaktır. X, Y ve A registerlerinin her biri için toplam3 mukayese komutu vardır. X registeri için CPX (ComPare X), Y registeri için CPY ve A registeri için CMP dir.

IMMADIATE (DOLAYSIZ) ADRESLEME Bu # sembolü ile yapılan adreslemedir. A registeri için kıyas komutu 'CMP 67'. Bu A registeri ile 67 sayısını mukayese eder. Kıyas komutunın neticesi aşağıda olduğu gibidir: 1- Eğer register mukayese edilen veri (data) den küçükse Negatif (N) flag set (1) olur. 2- Eğer register ve data eşitse Zero ve Carry flaglar set (1) olacaktır. 3- Eğer register mukayese edilen datadan büyükse Carry flag set (1) olacaktır. Yukarıdaki noktalar kıyas komutları için önemlidir. İşte dolaysız adresleme kullanmaya bir örnek: Co00 LDA # $ 56 CMP # $ 70 RTS Bu programı çalıştırdıktan (execute) sonra Negatif flag'ın set (1) durumunda olduğunu göreceksin. Çünki A registeri data (70)dan daha küçük. İşte CPX kullanılan bir başka örnek: LDX # $ 67 C002 CPX # $ 67 Co04 RTS Program çalıştırıldığı zaman Carry ve Zero flag'lar set (1) olacak, çünki X registeri data (67) ya eşit. İşte CPY kullanılan bir başka örnek:- Cco00 LDY # $ 60 C002 CPY # $ 20 Co04 RTS Burada sadece Carry flag set (1) Y registeri data (20)dan büyüktür.

Dr. Ali Özçelik

ZERO PAGE ADRESLEME Bütün registerler Zero Page üzerindeki bütün bölgelerle mukayese edilebilirler. Önce bakacağımız CMP: C000 LDX #$09 STX $FB C004 LDA #$06 C006 CMP $FB C008 RTS A registeri FB bölgesindeki değerden az, dolayısıyle Negatif flag set (1) dir. İşte CPX ve CPY için örnekler: C000 LDA #$57 C002 STA $FD C004 LDX #$58 C006 CPX $FD C008 RTS

C000 LDA #$30 C002 STA $FE C004 LDY #$30 CPY $FE C008 RTS Birinci programda Carry flag set olur, çünki X registeri data ($57)'den büyüktür. İkinci programda hem Carry flag ve hem de Zero flag set olur, çünki Y registeri data ($30)'ya eşit.

ZERO PAGE INDEXLİ ADRESLEME Sadece A registeri Zero Page indexli adreslemede kıyas komutuna sahiptir. X registeri index olarak kullanılır: C000 LDX #$10 C002 LDA #$0F C004 CMP $B7,X C006 RTS Program A registerini $B7+X bölgesine mukayese eder. $B7 bölgesi reverse / non-reverse print'i kontrol eder. Eğer 01'e eşitse kompüter reverse olarak print eder. Eğer reverse print yapıyorsan ve yukarıdaki programı çalıştırıyorsan (execute) Carry ve Zero flaglar set (1) durumuna geçecektir.

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