64'ler sayı 19, sayfa 26

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 26

— BASIC moduna dönmeden önce Decimal flag'ı reset et, aksi taktirde kompüter crash olacaktır. — ADC aşağıdaki adresleme modlarında kullanılabilir.

IMMEDIATE (ADC #$ZZ) ZERO PAGE (ADC $ZZ) ZERO PAGE INDEXED (ADC $ZZ,X) ABSOLUTE (ADC $ZZZZ) ABSOLUTE INDEXED (ADC $ZZZZ,X) INDIRECT INDEXED (ADC ($ZZ),Y) Yukarıdaki ZZ iki digit rakam, ZZZZ 4 digit hex rakam demektir.

SBC (Subtract from a Register with Borrow) Registerden, borç hanesi ile beraber çıkarma. SBC komutu A registerinden çıkarma yapmak için kullanılır. Eğer Carry flag set değilse, A registerinden extra bir $01 alınır. Eğer Carry flag set ise, Carry flag çıkarma sırasında ihmal edilir.

İşte bir örnek. Dikkat et, ihmal edilmesi için Carry flag set durumunda: CO00 LDA # $ 40 C002 SEC SBC # $ 20 Co05 RTS

A registerindeki sonuç $20, çünkü $40-$20 = $20'dir. Carry clear olsa idi A = $1F olacaktı, çünkü extradan $01 çıkarılmış olacaktır. $40-$20-$01 = $1F

SBC desimal modda da kullanılabilir. Decimal flag set ise, SBC komutu desimal çıkarma yapar. Örnek: Decimal flag set ise 20-01 = 19 olacak, 1F değil. Desimal çıkarmaya bir örnek:

CO00 LDA # $ 60 C002 SED SEC SBC # $ 15 Co06 CLD COO7 RTS

Yukarıdaki program 60'dan 15'i çıkartır. Decimal ve Carry flag'lar set olduğundan sonuç A = 45 olacaktır.

SBC ÜZERİNE NOTLAR — Çıkarmanın sonucu Zero veya pozitif ise Carry flag set'tir. — Çıkarma sonucu 00 ise Zero flag set olacaktır. — Sonuç 00'dan az ise negatif flag set olacak, bu durumda A register'inin 7.ci bit'i de set olacaktır. — Çıkarma -80'den az ise Overflow flag set olacaktır. — SBC aşağıdaki adresleme modlarını kullanabilir:

IMMEDIATE (SBC #$ZZ) ZERO PAGE (SBC $ZZ) ZERO PAGE INDEXED (SBC $ZZ,X)

ABSOLUTE (SBC $ZZZZ) ABSOLUTE INDEXED (SBC $ZZZZ,X veya SBC $ZZZZ,Y) INDEXED INDIRECT (SBC ($ZZ,X)) INDIRECT INDEXED (SBC ($ZZ),Y)

İşte size bu bölümü kavradığınızı anlamak için bir problem: X ve Y register'lerini toplayan ve bu toplamı da A register'ine ilave eden bir program yaz. Aşağıdaki komutları kullanabilirsiniz: PHA, PLA, CLC, RTS, TXA, TAX, STY $FE, STX $FE, ADC $FE. Bunlardan herbirini bir kereden fazla kullanabilirsiniz. Bu komutları kullanarak yapamıyorsan kendi istediğin komutları kullan. İşte cevap:

Co00 PHA Co01i TXA C002 STY $ FE CO04 CLC ADC $ FE COO7 TAX CO08 PLA C009 STX $ FE CO0OB CLC | COOC ADC $ FE | COOE RTS

Bu problemin tek cevabı değil, bundan başkada cevap bulunabilir.

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