64'ler sayı 18, sayfa 33

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 33

a SO

Bu programı çalıştırdığınız zaman time delay az görülebilir, fakat 130.000 civarında komut çalıştırır (execute). Bu nasıl çalışır:

C000: X registeri 00 ile yükler. C002: Y registeri 00 ile yükler. C004: X registeri FF değerine azaltılır, Negative flag'ı 'set', Zero flag'ı 'reset' eder. C005: Zero flag 'reset' olduğu için C004 adresine dallanma yapılır. C007: X registeri 00 değerine azaltıldığı zaman, bu komut icra edilir ve Y registeri azaltılır. C008: Eğer Y registeri 00 değerine azalmazsa C007 bölgesine dallanma yapar. C00A: Kompüter BASIC'e döner.

BEO (Branch on Result Zero) Bu BNE komutunun tersidir. Zero flag “set' değilse branch yapılır. LDA $ BEO $ CO06 CO0O5 RTS CO06 LDA # $ 80 CO08 STA $ 028A CooB RTS

Bu program 028A bölgesinin 00'a eşit olup olmadığını kontrol eder. Eğer 00'a eşitse C006 adresine dallanılır. Eğer dallanma olursa 0280 adresi 80'e eşitle.

nir, ki bu da tuş tekrarını (repeat key) set eder.

BMI (Branch on Result Minus) Bu komutta Negative flag 'set' ise dallanma olur, aşağıdaki programda olduğu gibi: C000 LDA #$20 C002 CMP #$30 C004 BMI $C007 C006 RTS C007 LDA #$00 C009 STA $D020 C00C RTS

Bu program A registerini 30 ile mukayese eder, 30'dan küçük olduğundan Negative flag 'set' olur. Böylece C007 bölgesine dallanma yapılır ve bordür rengi değiştirilir.

BPL (Branch on Result Plus) Bu BMI'nın tam tersidir. Negative flag clear (reset) olduğu zaman dallanma yapar, aşağıdaki örnekte olduğu gibi:

CO00O LDX $ 30 CO02 STA $ FB CO04 LDY # $ 30 CPY $ FB

C008 BPL $ COOB COOA RTS

COOB STY $ Dö21 COOE RTS

Bu program ekranın rengini değiştirir, çünkü C008 adresinden C00B adresine dallanma olmuştur.

BVC ve BVS Bu komutlar Overflow flag'ın durumuna göre dallanma yapar. BVC'de Overflow flag clear (reset) ise dallanma olur. BVS'de Overflow flag set ise dallanma olur. Overflow flag'lar hakkında 12. bölümde daha detaylı bilgi verilecektir.

Şimdi test için başka bir problem: 255 kere A karakteri basan bir program düşün: Cevap: # $ 00 C002 LDA #$ 41 CO04 JSR $ FFD2 COO7 INX C008 BNE $ CO04 COOA RTS

veya

LDY # $ 00 CO02 LDA #$ 41 CO04 JSR $ FFD2 COO7 INY BNE $ CO04 COOA RTS

Üstteki iki program da çalışacaktır. Nasıl çalıştığını anladıysan bir sonraki bölüme devam et. Aksi taktirde son iki bölümü gözden geçirmekte yarar var.

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