İçindekiler
Kursun en başında belirttiğim gibi AND OR ve Exclusive OR işlemlerinin ne olduğunu bildiğinizi varsayıyorum. Fakat burada bu işlemleri 6510 assembly de gerçekleştiren komutları tanıttıktan sonra kısaca bu komutların en sık kullanıldığı birkaç yerden bahsedeceğim.
AND komutu akümülatördeki değer ile argümanda belirtilen değerleri "AND"(VE) işlemine sokar ve sonucu akümülatöre geri yazar:
lda sayı1
and sayı2
sta sonuc
ORA komutu akümülatördeki değer ile argümanda belirtilen değerleri "OR"(VEYA) işlemine sokar ve sonucu akümülatöre geri yazar:
lda sayı1
ora sayı2
sta sonuc
EOR komutu akümülatördeki değer ile argümanda belirtilen değerleri "Exclusive OR" işlemine sokar ve sonucu akümülatöre geri yazar:
lda sayı1
eor sayı2
sta sonuc
AND ve ORA nın çok sık kullanıldığı durumlar vardır. Şimdi biraz bunlardan bahsedelim. Çoğu zaman bir baytın içindeki bir veya birkaç bite erişip sadece onlar üzerinde değişiklik yapmak isteriz. Bu VIC gibi çeşitli giriş çıkış çiplerinin registerleri ile uğraşırken çok olur. Aynı registerin bir biti ekranı kapatıp açarken başka 3 biti y yönünde kayma, başka bir bit bitmap moduna geçme gibi görevlere sahip olabilir.
Bu durumlarda Biz sadece istediğimiz bitleri sıfırlamak için and işlemini kullanabiliriz. Örneğin
lda register
and #%11101111
sta register
bu kod registerin diğer bitlerine dokunmadan yalnızca 5. biti 0 yapar. AND komutunda bu sefer immediate adresleme kullandığımıza dikkat edin.
Tersine bir biti bir yapmak istersek o zamaz da ora kullanırız.
lda register
ora #%00010000
sta regıster
bu kod ise diğer bitlerde değişiklik yapmadan yalnızca 5.biti 1 yapar. Bazen de registerdaki bir grup biti kontrol etmek isteyebiliriz. Mesela registerin üst 4 bitine değişiklik yapmadan alt 4 bitine 6 değerini yazmak istiyoruz.
lda register
and #%11110000
ora #6
sta register
bu kod once regısterde okuduğumuz değerin alt 4 bitini 0 yapıyor sonra da istediğimiz değeri ora ile o bitlere yazıyoruz.
Son olarak EOR komutu ise genelde bir takım bitleri tersine çevirmek için kuulanılır. Örneğin
lda register
eor #%01000001
sta register
kodu regısterın 1. ve 7. bitlerini tersine çevirir. Böylece registerin aynı iki değer arasında sürekli gidip gelmesi sağlanılabilir (bu da bazen interlace resim gösterirken kullanılır)
EOR komutunun çok önemli bir kullanım alanı da filled polygon çizerken kullanılan EOR-filling adı verilen methodda oynadığı roldür.Buna daha ileride değineceğiz.