NightNetwork - yazılım, yazın, verim vs.

Bölüm 9. Mantıksal İşlemler

İçindekiler

9.1. Ödev

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.

NightNetwork - 2009