|
Konu Başlığı: ORA ve AND Gönderen: wizofwor üzerinde Haziran 16, 2014, 10:47:43 ÖÖ Malumunuz VIC için bank seçerken $DD00 adresinin son iki bitini değiştirmek gerekiyor. Bunun kolayı STA kullanmak, doğrusu STA'dan önce ORA kullanmak diye biliyorum. Dolayısıyla aşağıdaki örneği anlamadım. Burada AND'i niye kullanıyoruz?
lda $DD00 and #%11111100 ora #%00000011 sta $DD00 Konu Başlığı: Ynt: ORA ve AND Gönderen: nightlord üzerinde Haziran 16, 2014, 11:21:42 ÖÖ and'in gerekli olup olmadigi su iki seye bagli
- orada su anda hangi deger var (00 01 10 veya 11) - yeni yazmak istedigin deger ne O yazmacin diger bitleri baska seyleri kontrol ediyor. biz o bitleri degistirmeden sadece bank seciminde kullanilan son iki bite yeni birsey yazmak istiyoruz. Ancak bu yazdigimiz sey iki bitlik bir deger ve o 2 bitten 1 veya 2'si 0 olabilir. O durumda and kullanmadan ora kullanirsak ve yazmak istedigimiz deger ornegin 01 ise ora komutu ikiler basamagindaki degeri degistirmeden sadece 1'ler basamagindaki degeri 1 yapmis olur. yani orada su anda 10 yaziyordu ve biz 01 yazmak istedik ancak sadece ora #01 diyerek o iki bitte 11 sonucunu elde ediyoruz. and $fc diyerek o iki biti once 0'lamis ardindan ora ile 1 olmasini istediklerimizi 1'lemis oluyoruz. Bu ornekte verdigin bank hic degismeyecekse yani oraya her zaman 11 yazacaksan and'i optimizasyon amaci ile disarida birakabilirsin. sik kullanilan bir diger optimizasyon da sudur: eger iki bank arasinda gidip geleceksen, xor ile tek komutta farkli bitleri flipleyebilirsin. Konu Başlığı: Ynt: ORA ve AND Gönderen: wizofwor üzerinde Haziran 16, 2014, 11:58:48 ÖÖ Aşağıdaki gibi mi?
lda $DD00 and #%11111100 ora #%00000010 sta $DD00 ... lda $DD00 eor #%00000010 sta $DD00 ... lda $DD00 eor #%00000010 sta $DD00 Konu Başlığı: Ynt: ORA ve AND Gönderen: witchdoktor üzerinde Haziran 16, 2014, 13:54:48 ÖS nightlord güzel açıklamış ama ben de tuz biber olayım.
AND %11111100 ile 2-7. bitleri maskeleyip (içeriğini koruyup) ilk iki biti (bit 0 ve 1) sıfırlıyoruz. ORA ile de daha önce sıfırlamış olduğumuz bit'lerden istediklerimizi set (1) ediyoruz. |