IORLW, IORWF,
XORLW, XORWF KOMUTLARI
İki bit arasında VEYA işlemini yapar.
Elektronik bilgilerimizden de
hatırlayacağınız gibi VEYA kapısında karşılaştırılan bitlerden en az
birisi 1 ise sonuç 1 olur. eğer işlem gören bitlerden her ikisi de
"0" ise Sonuç Sıfır olur.
Or mantığı paralel devre mantığıdır.
|
A |
B |
A OR B |
|
0 |
0 |
0 |
|
0 |
1 |
1 |
|
1 |
0 |
1 |
|
1 |
1 |
1 |
PIC de OR işlemi için IOR kullanılır,
IORLW= Write register
içeriğini istenen bir sabit veri ile OR işlemi uygular ve sonucu W
registere yazar.
IORWF = Bir file
register içeriği ile write register içeriğine OR işlemi uygular ve
sonucu F veya W içine yazar.
|
Bitler |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
A |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
|
B |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
|
A IORLW B |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
Bu komut ile 0 olan bitleri 1
yapabiliriz.
örneğin;
|
bitler |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
A |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
|
B |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
A IORLW B |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
IORLW için örnek:
|
MOVLW |
B’01010101’
|
;Binary
01010101 sayısını W registere ata |
|
IORLW |
B’10101010’
|
;Write
registerdeki sayı ile binary 10101010 sayısını OR la |
|
MOVWF |
PORTB |
;Sonucu
PORTB' ye gönder. |
Sonuç olarak PORTB
çıkışlarının hepsi 1 olacaktır. Ledler bağlı ise tüm ledler
yanacaktır.
Byte içeriği 0 mı ?
Write register içindeki bir byte lık
bir bilginin 0 olup olmadığını anlamak için=> 0 sabit verisi ile
IORLW işlemi uygulanabilir ya da File register içindeki bilginin 0
olup olmadığını anlamak için=> W registere 0 atanır ve IORWF işlemi
uygulanır.
Sonuc 0 sa Z flag 1 olur.
XOR (Exclusive OR gate = Özel
veya Kapısı)
XOR işlemi elektronik bilgilerden biraz
hatırlayacak olursak, Or işleminin biraz değişiği olup kısaca şöyle
tarif edebiliriz:
XOR da 2 bit karşılaştırılır ve bit
değerleri farklı ise sonuç 1 aynı ise sonuç sıfırdır.
1 bitlik XOR işlemi
sonuçları aşağıdaki gibidir.
|
A |
B |
A XOR B |
Açıklama |
|
0 |
0 |
0 |
a ve b aynı
sonuç sıfır |
|
0 |
1 |
1 |
a ve b
farklı sonuç 1 |
|
1 |
0 |
1 |
a ve b
farklı sonuç 1 |
|
1 |
1 |
0 |
a ve b aynı
sonuç sıfır |
XORLW= Write
register içeriği ile bir sabite XOR işlemi uygular ve sonucu write
register içine yazar.
XORWF= File register
ile Write register içeriğini XOR lar ve sonucu F veya W ‘a yazar
8 bitlik XOR işlemi
|
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
A |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
|
B |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
|
A XOR B |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
XOR işlemi ayrıca bitleri ters çevirmek için de kullanılır.
örneğin,
A=10100010 ise ve
biz A daki 0 ları 1 ve 1 leri de sıfır yapmak istersek.
B=11111111 ile A yı
XOR işlemine tabi tutarız.
aşağıdaki gibi,
|
Bitler |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
A |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
|
B |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
|
A
XOR B |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
XOR ile
karşılaştırılan W register - Sabit / File Register içerikleri
birbiri ile aynı ise XOR işlemi sonunda Z flag set edilir.
ANDLW,ANDWF,IORLW,IORWF,XORLW,XORWF
işlemleri 1 saat çevrimi sürede işlenir.