Commodore sayı 13, sayfa 17

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 17

5. Mantıksal İşlem Komutları

Mantıksal işlemler de, aritmetik işlemler gibi iki değer arasında yürütülür. Aritmetik işlemlerle diğer bir benzerlik, operand'lardan birinin akümülatör'de bulunma zorunluluğu. Diğer operand için tanıdık adresleme tiplerimiz mevcut. Mantıksal işlem yapıldıktan sonra sonuç burada da akümülatör'e alınmakta. 6510 ana işlem ünitemiz üç türlü mantıksal işlem yapabiliyor.

VE (AND) işlemi:

Bu işlem akümülatör ve diğer operand arasında bit bazında yürütülür. Bazılarınızın daha evvelden biliyor olabileceği “VE” işlemi, aslında iki adet birer bitlik veriler arasında yürütülür. Bu işlemin sonucu yalnızca her iki veri de 1 olduğunda “1”dir. Bunun ne anlama geldiğini ufak bir mantıksal tablo yaparak inceleyelim:

0 AND 0 OANDI - 1 AND O DANDİ

|

Bit bazında “VE” işlemini gördükten sonra, şimdi de byte bazında bu olay nasıl gerçekleşiyor, gelin hep beraber bir örnek üzerinde görelim:

AND

Diyelim ki akümülatör bu işlemden önce $5D içermekte, işlem şöyle gerçekleşir:

$5D 01011101, $37 00110111, $15 00010101

Sonuç olarak 00010101 yani $15 elde ettik. Bu işlemi BASIC'te yaptırmak için tabii ki AND komutunu kullanacağız.

Ayhan KALAYLIOĞLU

AANDS5S5 ($37)

Burada A'nın değeri; AND $37, yani A=93 AND 55'tir. Sonuç olarak 21, yani $15 elde ederiz. AND işlemi sırasında N- ve Z-flag'ları etkilenir. Sonuç olarak sıfır elde edersek, Z-flag'ı yanar. Sonucun 7'nci biti yanıksa N-flag yanar. Aşağıda AND işlemine ait komut kodlarını ve adresleme tiplerini bulacaksınız.

Adresleme tipi AND direkt $29, absolut $2D, 0. sayfa $25, X-indeksli $3D, Y-indeksli $39, 0. sayfa X-indeks $35, indirekt indeksli $31, indeksli indirekt $21

VEYA (OR) işlemi

Bu işlem de akümülatör ve veri arasında bit bazında yürütülür. Şayet iki bitten bir tanesi bile “1”se sonuç “1” olur. Küçük bir tabloda inceleyelim:

0 ORA 0 - O 0 ORA | - | 1OnrRA 0 - | 1OnrRA | - |

Bu veya işlemine 1, 1 kombinasyonunu da içerdiği (sonucu olumlu olduğu) için aynı zamanda “veya” (inclusive OR) denir. “İçermeyen veya” (exclusive OR) işlemini birazdan göreceğiz. VEYA işlemi sırasında da N- ve Z-flag'ları etkilenir. Şimdi işlemimiz byte bazında nasıl yürüyor, onu görelim:

ORA

Diyelim ki akümülatör $5D içeriyor. İşlem şöyle gelişir:

$5D 01011101 $37 00110111

$7F

Sonuç olarak yani $7F elde ettik. Aynı işlemi BASIC'te yaptırmak isteseydik OR komutunu kullanmamız gerekecekti:

A - A OR 55

Klavyeyle gezinmek için ← ve → tuşları.