64'ler sayı 20, sayfa 45

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 45

Carry flag 0. bite, 7. bitte Carry flag'a geçti. ROR (Rotate One bit Right) (Sağa bir bit rotate) Bu komut ROL'nin tam tersidir. Çünki Carry flag 7. bite, 7. bitte Carry flag'a geçer. İşte diagram:

Tİ) Aşağıdaki program FF (11111111) değerini 7F (011111111) ye rotate eder, sonuçta Carry set olur: co00 LDA #$FF

— CLC Co03 ROR coo4 — RTS

X ROL ve ROR, ASL ve LSR nin desteklediği adreslemeleri destekler. Sizin için bir problem çözme zamanı. Rotate ve shift'ten önce A registerinde 78 (01111000) değeri var ve Carry flag set. Rotation'- dan sonra A — ve Carry flag clear'dır. Bunlardan hangisini kullandım? Kullandığım komut ROL idi. İşte kullandığım

program: cooo LDA #$78 — SEC Co03 ROL Ccoo4 — RTS

Eğer cevabında ROL kullanmadınsa, fakat hatanı anlıyorsan devam et. Yoksa bu bölümü tekrar et.

LOJİK KOMUTLAR Lojik komutlar byte'ın bit'lerini değiştirir. Şimdiye kadar öğrenilen komutların aksine bit'te store ederler. Bu bölüm 6510 da kullanılan bütün lojik komutları izah eder.

AND (Memory'i A registeri ile AND et) Not: AND çarpmaya benzer bir işlem. Bu BASIC'teki AND komutu gibidir. A registeri AND komutunu kullanan tek registerdir. Komut her bir bit'i diğer bit'lerle teker teker mukayese eder. Eğer iki bit set (1) ise sonuç set (1). Aksi takdirde reset (0) dir. İşte bir örnek: 1 X 1 = 1 0 X 0 = 0 10111010 10001011

10001010 Yukarıdaki iki sayı AND edilmiştir. Alttaki sayı ise sonuçtur. Assembly dilinde AND kullandığın zaman A registeri daima sonucu muhafaza eder. İşte 45 CE (11001110) ile AND edilmesini gösteren örnek: C000 LDA #$45 C002 AND #$CE C004 RTS AND komutu bazı bit'leri off - 0 etmek için çok kullanışlıdır. Mesela 0. bit'i off yapmak için FE (11111110) ile AND et. 7. bit'i, 0. bit'i off yapmak istersen 7E (01111110) ile AND et. AND üzerine notlar: * Eğer sonuç 80 ile FF arasında ise Negative flag set olacaktır. * Eğer sonuç 00 ise Zero flag set olacaktır. * A registeri AND komutu için aşağıdaki adresleme modlarını destekler: IMMEDIATE (AND #$ZZ) ZERO PAGE (AND $ZZ) ZERO PAGE INDEXED (AND $ZZ,X)

ABSOLUTE (AND $ZZZZ)

ABSOLUTE INDEXED (AND $ZZZZ,X) veya (AND $ZZZZ,Y) INDEXED INDIRECT (AND ($ZZ,X)) INDIRECT INDEXED (AND ($ZZ),Y) ORA (Memory'i A registeri ile OR et) Bu BASIC'teki OR komutu ile aynıdır. İki numaranın her bit'i mukayese edilir. Eğer biri veya ikisi de set ise sonuç set olur. Not: Toplama gibi 1 + 0 = 1 0 + 1 = 1 İşte örnek: 10111001 00100101 10111101 OR komutu bazı bit'leri ON - 1 yapmak için kullanılır. İşte 028A bölgesinde 7. bit'i ON eden program: C000 LDA $028A C003 ORA #$80 C005 STA $028A C008 RTS 1 = ON 0 = OFF A registeri ORA komutunun neticesine sahiptir. 64'ler sayfa 45

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