Bu sayfadaki yazılar
Sayfanın metni
Sayfa 10
BİTLER İŞLEM SONUÇ 0 - 0 EOR 0 0 - 1 EOR 1 1 - 0 EOR 1 1 - 1 EOR 0 Eğer EOR komutunu kullanmayı bilirseniz herhangi bir adresin değeri her seferinde başlangıç ve bitiş değeriyle değiştirebilirsiniz. Bir örnek verelim.
Diyelim ki bir program yaptınız ve program içinde bir arttırma komutunuz var. Bir sayaç ile artış miktarını kontrol ediyorsunuz. Sayaç belli bir sayıya ulaştığında arttırma komutunu azaltma komutuna çevirmeniz gerekiyor. Bunun için EOR komutunu kullanabilirsiniz. Her EOR komutu işlendiğinde komut kodu AZALTMA-ARTTIRMA şeklinde değişir. Aşağıdaki tabloyu inceleyin.
ETİKET KOMUT PARAMETRE AÇIKLAMA ... ........ ........ DENEME INC $D000 Adresi 1 arttır LDX SAYAÇ Sayacı oku INX Sayaç değerini 1 arttır CPX #$40 Sayaç #$40 mı ? BNE GİT Değilse git.
LDA DENEME Adresi oku. (Okunan ilk değer #$EE' dir.)
(Son değer #$CE' dir.)
EOR #$20 #$20 ile EOR'la. (Sonuç #$CE olur.)
(Daha sonra #$EE olur.) STA DENEME Adrese yaz. LDX #$00 Sayacın yeni değeri GİT STX SAYAÇ Sayaca yaz ... ........ ........ TOPLAMA VE ÇIKARMA İŞLEMLERİ
Eğer bir program yazarken toplama veya çıkarma işlemi yapacaksanız dikkat etmeniz gereken bir nokta vardır. Bir toplama işlemine başlamadan önce mutlaka CLC komutu kullanarak ELDE bitini sıfırlayın. Daha sonra toplama işleminizi yapın. Yaptığınız toplama (eğer bir baytlıksa) işleminde sonuç 255'i geçerse (en fazla 510 olur) CARRY (Elde) biti "1" olur. Bu "1" ilk dersimizde gördüğünüz LOW BAYT - HIGH BAYT formatındaki HIGH BAYT'ı gösterir ve 256 demektir. Toplama işleminizin sonucu CARRY * 256 + AKÜDEKİ DEĞER şeklindedir. Aküdeki değer LOW BAYT anlamına gelir.
Bu anlattıklarımızı bir örnekle görelim.
ETİKET KOMUT PARAMETRE AÇIKLAMA ... ........ ........ LDX #$20 X'e #$20 değerini yükle. STX ADRES1 Bu değeri adres1'e kopyala. LDA #$80 Aküye #$80 değerini yükle. CLC Elde bitini "0" yap.
ADC ADRES1 Aküdeki değeri Adres1 deki değer ile topla. STA ADRES2 Sonucu Adres2' ye yaz. BCS GİT Eğer ELDE biti "1" ise git. RTS ELDE yoksa programı bitir. GİT ... ........ ........
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 11
Eğer bir çıkarma işlemi yapacaksanız bu kez de SEC komutu kullanarak ELDE bitini "1" yapın. Daha sonra çıkarma işleminizi yapın. Bunun faydası AKÜ - SAYI işleminde SAYI Aküdeki değerden büyükse sonucun doğru olmasını sağlar. Şunu unutmayın: Çıkarma işleminde dikkatli olun.
KOMUT LİSTESİ (ALFABETİK SIRA) 6510 işlemcisine ait komutları önce ikiye ayırmak gerekiyor. 1- Standart Komutlar: Bu kategorideki komutlar 6510'un üreticisi tarafından çalışması garanti edilen komutlardır.
2- Standart Olmayan Komutlar: Bu kategorideki komutlar için her makinada çalışabilir diye kural yoktur. Sizin makinanızda çalışan bir komut başka bir makinada kilitlenmeye yol açabilir. Ama bu kategorideki komutlardan bazıları çok işe yarayabilir. Yazı dizimizin sonunda bu komutların bir listesini vermeyi düşünüyorum. NOT: Komut Tablolarında $ADR Sıfırıncı sayfa'daki bir adresi gösterir 0 ile 255 ($00 - $FF) arasındaki adresleri kapsar. (0 ve 255 dahil) $ADRES ise 0 ile 65535 ($0000 - $FFFF) arasındaki adresleri kapsar. (0 ve 65535 dahil) #$SAYI 0 ile 255 ($00 - $FF) arasındaki bir sayıyı gösterir. (0 ve 255 dahil)
KOMUT AÇIKLAMA ETKİLENEN BAYRAKLAR
ADC
Aküdeki değerle sabit bir sayıyı veya başka bir adresteki değeri elde bitini de kullanarak topla.
Sonucu aküye yaz.
N Z C V
ADRESLEME MODU ASSEMBLER KOMUTU İŞLEM KODU BAYT SAYISI ÇEVRİM SAYISI Dolaysız ADC #$SAYI 69 2 2 Sıfırıncı Sayfa ADC $ADR 65 2 3 Sıfırıncı Sayfa X indeksli ADC $ADR, X 75 2 4 Mutlak ADC $ADRES 6D 3 4 Mutlak X İndeksli ADC $ADRES, X 7D 3 4 * Mutlak Y İndeksli ADC $ADRES, Y 79 3 4 * İndeksli Dolaylı ADC ($ADR, X) 61 2 6 Dolaylı İndeksli ADC ($ADR), Y 71 2 5 * * Sayfa sınırı ile karşılaştığında 1 ekle
KOMUT AÇIKLAMA ETKİLENEN BAYRAKLAR
AND Aküdeki değerle sabit bir sayı veya adresteki değer arasında "AND" işlemi yap. Sonucu aküye yaz. N Z
ADRESLEME MODU ASSEMBLER KOMUTU İŞLEM KODU BAYT SAYISI ÇEVRİM SAYISI Dolaysız AND #$SAYI 29 2 2 Sıfırıncı Sayfa AND $ADR 25 2 3 Sıfırıncı Sayfa X indeksli AND $ADR, X 35 2 4 Mutlak AND $ADRES 2D 3 4 Mutlak X İndeksli AND $ADRES, X 3D 3 4 * Mutlak Y İndeksli AND $ADRES, Y 39 3 4 * İndeksli Dolaylı AND ($ADR, X) 21 2 6 Dolaylı İndeksli AND ($ADR), Y 31 2 5 * Sayfa sınırı ile karşılaştığında 1 ekle
KOMUT AÇIKLAMA ETKİLENEN BAYRAKLAR
ASL
Aküdeki veya adresteki değeri bir bit sola kaydır (Sayı 2 ile Çarpılmış olur). Sayının 7. biti "C"'ye yüklenir, 0. Bitine her zaman "0" değeri yüklenir.
N Z C
ADRESLEME MODU ASSEMBLER KOMUTU İŞLEM KODU BAYT SAYISI ÇEVRİM SAYISI Akü ASL A 0A 1 2 Sıfırıncı Sayfa ASL $ADR 06 2 5 Sıfırıncı Sayfa X indeksli ASL $ADR, X 16 2 6 Mutlak ASL $ADRES 0E 3 6 Mutlak X İndeksli ASL $ADRES, X 1E 3 7