sonra geliyorsa (harfler, grafik işaret- leri ve bazı özel semboller) Carry- i, N- ve Z- Bayrakları - 0 olur. 2. Akümülatörde tam 58 değeri varsa, yani işaret “*:” ise Carry ve Z- Bayrağı | değerini alırken, N-Bayra- ği —0 olur. 3. Klavyeden girilen işaretin ASCII kodu 58'den küçük ise (rakamlar, ba- zı özel semboller ve kontrol işaretle- ri) bu durumda N-Bayrağı — | olur ve diğer ikisi sıfır olarak kalır. Daha sonraki satırda yer alan BCS $OOSA ise Carry Bit'i ım kontrol et- mektedir: Eğer değeri | ise, yani eğer akümülatördeki değer SS’den büyük veya eşit ise program sayacı RTS'ye atlamaktadır. Burada akümülatör değeri ve bayrakların konumları ol- duğu gibi bu rutini çağıran programa aktarılmaktadır. Eğer basılan tuşun ASCIL kodu 58'den küçük ise bilgi- sayar rutinin kalan kısmını okuya- caktır Bir sonraki satırdaki CMP $20 akümülatördeki değerimizi $20— 32 (boşluk tuşu) ile karşılaştırmaktadır. Bu durumda statü registerindeki bay- rakların konumları akümülatördeki değere göre aynen yukarıdaki karşı- laştırmada olduğu gibi belirlenir. BEO $0073 komutu ile program CHRGET rutininin başına dönmek- tedir. (Eğer SPACE tuşuna basılırsa CMP 20 komutu Z-Bayrağını | ya- par). Bu durumda boşluk tuşu bilgi- sayar tarafından atlanır ve başka bir işaret beklenir. Diğer işaretler ise CHRGET rutinin son bölümünde Flag rutinleri diye adlandırılan bir prosedüre girerler. Birbirini izleyen iki çıkartma işle- minde akümülatörün değeri değiş- mez, ece Carry Bit'i etkilenir. Şımı:lı bu aşamnda neler olup bittiği-. ni gözleyelim. sec satırı çıkaı'tma işlemi için ge- rekli hazırlığı gerçekleştirmektedir. SBC # $30 akümülatörün değerin- den $30 — desimal 48'i çıkartmakta- dır. Hesap işlemlerinde sayıların ikin- ci dereceden karşılıklarının kullanıl- dığını daha önce görmüştük. $30'un karşılığı 1101 0000'dır. Şimdi akümülatörde 4 rakamının ASCII kodunun (desimal 52 veya $34) olduğunu farzedelim. İşlem şu şekildedir: 52 0011 Ol100 * 1101 0100 (1)0000 - 0100 Sonuç 4'dür ve artan ihmal edilir. Dığu- bir örnek olarak akümülatö- rümüzde tırnak işaretinin ASCII ko- dunun (desimal 33 —- $21 —-0010 0001) bulunduğunu kabul edelim. İşlem şu şekildedir: 33 0010 0001 * 1101 0000 1111 0001 Sonuç —15'dir. Sonuç olarak şunu söyleyebiliriz: Sayılara ait olanların dışındaki tüm kodlar akümülatörde negatif bir so- nuç verirler ve dolayısıyla Carry Bit'i temizlenir. Burada da $D0— desimal 208 çı- kartılmaktadır. Yalnız bu sayının ikinci dereceden karşılığı artık 8-Bit'- lik sayılarla gösterilemez, zira 7. Bit'- te 1 değeri bulunmaktadır (208 — 1101 0000). Fakat işimizi kolaylaştırmak için sayımızın ikinci dereceden karşı- lığını 0011 0000 olarak kabul edebi- liriz. Burada Carry Bit'i silinecektir. Şimdi tekrar yukarıdaki ilk örne- ğe dönelim. Çıkartma sonucunda akümülatörde 4 değeri kalmıştı. Şimdi $0087 satırından itibaren in- $ gg?? w celemeye devam edelim. — SEC 0011 Ol00 SBC # $DO Görüldüğü gibi tekrar ilk baştaki Komut İndeksli Adresleme Mutlak Sıhnncı—SaMutlak X Y X LDA t * * - LDX - * - * LOY * - * - STA * * t - STX - - - * STY - - * - RTS ! / ! / INX ! ! / / INY ! ! / ! INC * z * - DEX / l J / DEY / / / / DEC * - * - SED / l / / CLD / ! ! ! BNE / / / / ADOC * * * - CLC ! / / ! SBC * * * - SEC ! / / / BEĞ / ! / ! BOC / / / / BOS / / / j BMİ / / / / BPL / / l / BVCO / ! ! / BVS / / / l CMP * * * - cpx - - - - cPY - - - - BIT — a — - CUW ! ! ! ! NOP / ! ! ! TAX ! ! ! / TAY ! ! İ / TXA / / l / TYA / / ! ! JMP - - - - JSRA ” a - ü * kullanılabilir - kullanılmaz / hiçbiri kullanılmaz