Komut Özetleri


Komut Açıklama Etkilenen Flag'ler Komut Döngüsü Sayısı
ADDWF FR, H FR+W⇒W (H=0 ise), FR+W⇒FR (H=1 ise)
W ile FR'yi toplar ve sonucu hedef H'ye yazar.
Z, DC, C 1
ANDWF FR, H FR&W⇒W (H=0 ise), FR&W⇒FR (H=1 ise)
W ile FR'yi AND (VE) mantık işleminden geçirir ve sonucu hedef H'ye yazar.
Z 1
CLRF FR FR=0
FR'nin içeriğini siler (sıfırlar).
Z 1
CLRW W=0
W'yu siler (sıfırlar).
Z 1
COMF FR, H FR⇒W (H=0 ise), FR ⇒FR (H=1 ise)
FR'nin her bir bitinin tersini alır ve sonucu hedef H'ye yazar.
Z 1
DECF FR, H FR-1⇒W (H=0 ise), FR-1⇒FR (H=1 ise)
FR'yi bir azaltır ve sonucu hedef H'ye yazar.
Z 1
DECFSZ FR, H FR-1⇒W (H=0 ise), FR-1⇒FR (H=1 ise)
FR'yi bir azaltır ve sonucu hedef H'ye yazar. Eğer sonuç 0 ise bir sonraki satır atlanır.
Hiçbiri 1 (FR≠1)
2 (FR=1)
INCF FR, H FR+1⇒W (H=0 ise), FR+1⇒FR (H=1 ise)
FR'yi bir artırır and sonucu hedef H'ye yazar.
Z 1
INCFSZ FR, H FR+1⇒W (H=0 ise), FR+1⇒FR (H=1 ise)
FR'yi bir artırır and sonucu hedef H'ye yazar. Eğer sonuç 0 (FR=255) ise bir sonraki satır atlanır.
Hiçbiri 1 (FR≠255)
2 (FR=255)
IORWF FR, H FR|W⇒W (H=0 ise), FR|W⇒FR (H=1 ise)
W ile FR'yi OR (VEYA) mantık işleminden geçirir ve sonucu hedef H'ye yazar.
Z 1
MOVF FR, H FR⇒W (H=0 ise), FR⇒FR (H=1 ise)
FR içeriğini hedef H'ye kopyalar.
Z 1
MOVWF FR W⇒FR
W'yi FR'ye kopyalar.
Hiçbiri 1
NOP İşlem Yok
Hiçbir şey yapmaz.
Hiçbiri 1
RLF FR, H FR<1⇒W (H=0 ise), FR<1⇒FR (H=1 ise)
Carry Flag üzerinde FR'yi bir bit sola kaydırır ve sonucu hedef H'ye yazar.
C 1
RRF FR, H FR>1⇒W (H=0 ise), FR>1⇒FR (H=1 ise)
Carry Flag üzerinde FR'yi bir bit sola kaydırır ve sonucu hedef H'ye yazar.
C 1
SUBWF FR, H FR-W⇒W (H=0 ise), FR-W⇒FR (H=1 ise)
FR'den W'yu çıkarır ve sonucu hedef H'ye yazar.
C, DC, Z 1
SWAPF FR, H FR'nin ilk ve son dört bitini blok halinde yer değiştirir ve sonucu hedef H'ye yazar. Hiçbiri 1
XORWF FR, H FR^W⇒W (H=0 ise), FR^W⇒FR (H=1 ise)
W ile FR'yi XOR mantık işleminden geçirir ve sonucu hedef H'ye yazar.
Z 1
BCF FR, B FR'nin B. bitini sıfır yapar. Hiçbiri 1
BSF FR, B FR'nin B. bitini bir yapar. Hiçbiri 1
BTFSC FR, B FR'nin B. bitinin 0 olup olmadığını kontrol eder. Eğer 0 ise bir sonraki satır atlanır. Hiçbiri 1 (if 1)
2 (if 0)
BTFSS FR, B FR'nin B. bitinin 1 olup olmadığını kontrol eder. Eğer 1 ise bir sonraki satır atlanır. Hiçbiri 1 (if 0)
2 (if 1)
ADDLW N N+W⇒W
Sabit Sayı N ile W'yi toplar ve sonucu W'ya yazar.
Z, DC, C 1
ANDLW N N&W⇒W
Sabit Sayı N ile W'yi, AND (VE) mantık işleminden geçirir ve sonucu W'ya yazar.
Z 1
CALL ETİKET ETİKET rutinini çağırır. Hiçbiri 2
CLRWDT Watchdog Timer'ı siler. TO, PD 1
GOTO ETİKET Programı etiketin hemen altındaki koda atlatır. Hiçbiri 2
IORLW N N|W⇒W
Sabit Sayı N ile W'yi, OR (VEYA) mantık işleminden geçirir ve sonucu W'ya yazar.
Z 1
MOVLW N N⇒W
N sabit sayısını W'ya kopyalar.
Hiçbiri 1
RETFIE Program kesmeden (interrupt'tan) döner. Hiçbiri 2
RETLW N Rutin'den döner ve W'ya N sabit sayısını kopyalar. Hiçbiri 2
RETURN Rutin'den döner. Hiçbiri 2
SLEEP Uyku moduna geçer. TO, PD 1
SUBLW N N-W⇒W
N sabit sayısından W'yu çıkarır ve sonucu W'ya yazar.
Z, DC, C 1
XORLW N N^W⇒W
Sabit Sayı N ile W'yi, XOR mantık işleminden geçirir ve sonucu W'ya yazar.
Z 1

ADDLW N



ADDLW N sabit sayısını W'ya ekler ve sonucu W'ya yazar.

Örnek: Diyelim ki aşağıdaki komuttan önce W=D'15' olsun.
ADDLW D'63'
komutu W'yu 15+63=78 yapar.

Not: ADDLW yanına eğer sayı yerine bir register ismi yazılmışsa, bu işlemde W ve bu registerın (değeri değil) adresi toplanır.

Örnek:
SAYAC EQU 0X05
...
MOVLW D'15' ; W=15
ADDLW SAYAC ; W=15+5=20

ETKİLENEN FLAG'LER

ADDLW Z, DC ve C flag'lerini etkiler.
Zero Flag (Z) Eğer toplam sonucu sıfırsa (veya 256 ise) Z=1 olur. Aşağıdaki örnekte sonuç 78 (0'dan farklı) olduğu için Z=0 olur.

Örnek:
MOVLW D'15' ; W=15
ADDLW D'63' ; W=15+63=78

Fakat, aşağıdaki örnekte sonuç 0 (8-bitlik hafıza alanı en fazla 255 sayısına erişebilir ve bu alanlar için 255'in bir fazlası 0'dır.) olduğu için Z=1 olur.

Örnek:
MOVLW D'193' ; W=193
ADDLW D'63' ; W=193+63=256=0

Digit Carry Flag (DC) Eğer N ve W'nun en düşük (en sağdaki) dört bitlerinin toplamı 15'ten büyükse DC=1 olur. Aşağıdaki örnekte W ve N'nin en düşük dört biti sırasıyla F(onluk düzende 15) ve 1'dir(onluk düzende 1). Bu iki sayının toplamı 15'ten büyük olduğundan dolayı işlem sonucunda DC=1'dir.

Örnek:
MOVLW 0X0F ; W=0X0F
ADDLW 0X01 ; W=0X01+0X0F=0X10

Fakat aşağıdaki örnekte, F ve W için en düşük dört bitin toplamı F'dir, dolayısıyla DC=0 olur.

Örnek:
MOVLW 0X0E ; W=0X0E
ADDLW 0X01 ; W=0X01+0X0E=0X0F

Carry Flag (C) W ve N'nin toplamının 255'ten büyük olduğu (başka bir değişle taşma olduğu) durumda 1 olur. Aşağıdaki örnekte toplam 300 olur ve 8 bitlik W registerinde bu sayı 300-255=45 olarak tutulur ve C=1 olur.

Örnek:
MOVLW D'50' ; W=50
ADDLW D'250' ; W=50+250=300=45

Fakat, aşağıdaki örnekte sonuç 255'ten küçük çıktığından C=0 olur.

Örnek:
MOVLW D'190' ; W=190
ADDLW D'63' ; W=190+63=253

Not: Tek bir ADDLW işleminden sonra her üç flag'de etkilenir. Aşağıdaki örnekte, sonuç sıfır olmadığından, Z=0'dır. Sonuç 255'ten büyük olduğundan C=1 olur. En düşük dört bitin toplamı 15'ten büyük olduğundan DC=1'dir.

Örnek:
MOVLW 0XFF ; W=0XFF
ADDLW 0X0F ; W=0X0F+0XFF=0X0E

ADDWF FR, H



ADDWF FR ile W'yu toplar ve sonucu hedef H'ye yazar.

Örnek: Diyelim ki aşağıdaki komuttan önce W=D'15' ve SAYAC=D'63' olsun.
ADDWF SAYAC, 0
komutu W=15+63=78 olmasına neden olur.

Not: ADDWF, FR'nin adresini değil içeriğini toplar. Aşağıdaki örnekte SAYAC'ın adresi 0X20, içeriği ise MOVLW ve MOVWF komutları ile 0X05 yapılmıştır. 0x20 adresi sonucu etkilemez.

Örnek:
SAYAC EQU 0X20
...
MOVLW 0X05 ; W=0X05
MOVWF SAYAC ; SAYAC=0X05
ADDWF SAYAC, 1 ; SAYAC=SAYAC+W=0X05+0X05=0X0A

ETKİLENEN FLAG'LER

ADDWF Z, DC ve C flag'lerini etkiler.

Not: Hedef H'nin (=0, W, 1 veya F) ne olduğu flag'ler üzerinde etkili değildir.

Zero Flag (Z) Eğer toplam sıfırsa (veya 256) Z=1 olur. Aşağıdaki örnekte sonuç 78 (0'dan farklı) olduğundan ADDWF komutundan sonra Z=0 olur.

Örnek:
W=15 ve SAYAC=63 olsun.
ADDWF SAYAC, F
komutu SAYAC=78 olmasını sağlar. W aynı kalır. Eğer hedef W (or 0) olsaydı, W=78 olur ve SAYAC aynı kalır.

Fakat, aşağıdaki örnekte sonuç 0 (8-bitlik hafıza alanı en fazla 255 sayısına erişebilir ve bu alanlar için 255'in bir fazlası 0'dır.) olduğu için Z=1 olur.

Örnek:
W=193 ve SAYAC=63 olsun.
ADDWF SAYAC,1 ;SAYAC=193+63=256=0

Digit Carry Flag (DC) Eğer FR ve W'nun en düşük (en sağdaki) dört bitlerinin toplamı 15'ten büyükse DC=1 olur. Aşağıdaki örnekte FR ve W'nin en düşük dört biti sırasıyla F(onluk düzende 15) ve 1'dir(onluk düzende 1). Bu iki sayının toplamı 15'ten büyük olduğundan dolayı işlem sonucunda DC=1'dir.

Örnek:
W=0X01 ve SAYAC=0X0F olsun.
ADDWF SAYAC, 0 ;W=0X01+0X0F=0X10

Fakat aşağıdaki örnekte, F ve W için en düşük dört bitin toplamı F'dir, dolayısıyla DC=0 olur.

Örnek:
W=0X01 ve SAYAC=0X0E olduğunu düşünelim.
ADDWF SAYAC, W ;W=0X01+0X0E=0X0F

Carry Flag (C) W ve N'nin toplamının 255'ten büyük olduğu (başka bir değişle taşma olduğu) durumda 1 olur. Aşağıdaki örnekte toplam 300 olur ve 8 bitlik W registerinde bu sayı 300-255=45 olarak tutulur ve C=1 olur.

Örnek:
W=D'50' ve SAYAC=D'250' olsun.
ADDWF SAYAC, 0 ;W=50+250=300=45

Fakat, aşağıdaki örnekte sonuç 255'ten küçük çıktığından C=0 olur.

Örnek:
W=D'190' ve SAYAC=D'63' olsun.
ADDWF SAYAC, W ;W=190+63=253

Not: Tek bir ADDWF işleminden sonra her üç flag'de etkilenir. Aşağıdaki örnekte, sonuç sıfır olmadığından, Z=0'dır. Sonuç 255'ten büyük olduğundan C=1 olur. En düşük dört bitin toplamı 15'ten büyük olduğundan DC=1'dir.

Örnek:
W=0X0F ve SAYAC=0XFF olsun.
ADDWF SAYAC, 0 ;W=0X0F+0XFF=0X0E

SUBLW N



W'yu N'den çıkarır, ve sonucu W'ya yazar.

Örnek: Başlangıçta W=D'15' olsun.
SUBLW D'63'
komutu W'yu 63-15=48 olur.

Not: Eğer bir register ismi SUBLW'nun yanına yazılmışsa, W bu register'ın adresinden çıkarılır.

Örnek:
SAYAC EQU 0X05
...
MOVLW D'3' ; W=3
SUBLW SAYAC ; W=5-3=2

ETKİLENEN FLAG'LER

SUBLW Z, DC ve C flag'lerini etkiler.
Zero Flag (Z) Çıkarmanın sonucu 0 ise Z=1 olur. Aşağıdaki örnekte sonuç 48 (0'dan farklı) olduğundan, SUBLW komutunun sonunda Z=0 olur.

Örnek:
MOVLW D'15' ; W=15
SUBLW D'63' ; W=63-15=48

Fakat, aşağıdaki örnekte sonuç 0 olduğundan, SUBLW sonucunda Z=1 olur.

Örnek:
MOVLW D'63' ; W=63
SUBLW D'63' ; W=63-63=0

Digit Carry Flag (DC) Eğer W'nun en düşük dört bitinin N'nin en düşük dört bitinden daha büyük olması durumunda DC=0 olur. Aşağıdaki örnekte, W ve N'nin en düşük dört biti sırasıyla F(onluk düzende 15) and 1'dir (onluk düzende 1). W'nin en düşük dört biti, N'nin en düşük dört bitinden daha büyük olduğundan SUBLW işleminin sonucunda DC=0 olur.

Örnek:
MOVLW 0X0F ; W=0X0F
SUBLW 0X01 ; W=0X01-0X0F=0XF2

Fakat aşağıdaki örnekte W'nin en düşük dört biti daha küçük olduğundan DC=1 olur.

Örnek:
MOVLW 0X01 ; W=0X01
SUBLW 0X0F ; W=0X0F-0X01=0X0E

Carry Flag (C) Eğer N, W'dan küçükse C=0, diğer durumlarda C=1 olur. Aşağıdaki örnekte W=50 ve N=250'dir. X

Örnek:
MOVLW D'50' ; W=50
SUBLW D'250' ; W=250-50=200

Fakat, aşağıdaki örnekte W>N'dir ve C=0 olur.

Örnek:
MOVLW D'190' ; W=190
SUBLW D'63' ; W=63-190=-127=129

Not: Tek bir SUBLW komutu her üç flag'i de aynı anda etkiler. Aşağıdaki örnekte, sonuç sıfırdan farklı olduğundan Z=0'dır. N

Örnek:
MOVLW 0XFF ; W=0XFF
SUBLW 0X0F ; W=0X0F-0XFF=0X10

SUBWF FR, H



SUBWF W'yu FR'den çıkarır ve hedef H'ye yazar.

Örnek: Başlangıçta W=D'15' ve SAYAC=D'63' olsun.
SUBWF SAYAC, 0
komutu W=63-15=48 olmasına neden olur.

Not: SUBWF W'yu FR'nin adresinden değil içeriğinden çıkarır. Aşağıdaki örnekte SAYAC'ın adresi 0X20'dir ve içeriği 0X05'tir. 0x20 adresi sonucu etkilemez.

Örnek:
SAYAC EQU 0X20
...
MOVLW 0X05 ; W=0X05
MOVWF SAYAC ; SAYAC=0X05
SUBWF SAYAC, 1 ; SAYAC=SAYAC-W=0X05-0X05=0X00

ETKİLENEN FLAG'LER

SUBWF Z, DC ve C flag'lerini etkiler.
Zero Flag (Z) Eğer çıkarmanın sonucu 0 ise Z=1 olur. Aşağıdaki örnekte sonuç 48 (0'dan farklı) olduğundan, SUBWF işlemi sonucunda Z=0 olur.

Örnek:
W=15 ve SAYAC=63 olsun.
SUBWF SAYAC, F
komutu SAYAC=63-15=48 olmasını sağlar. W aynı kalır. Hedef W (veya 0) olursa, W=48 olur ve SAYAC aynı kalır.

Fakat, aşağıdaki örnekte, sonuç sıfır olduğundan, SUBWF komutu sonucunda Z=1 olur.

Örnek:
W=63 ve SAYAC=63 olsun.
SUBWF SAYAC,1 ;SAYAC=63-63=0

Digit Carry Flag (DC) Eğer W'nun en düşük dört bitinin FR'nin en düşük dört bitinden daha büyük olması durumunda DC=0 olur. Aşağıdaki örnekte, W ve FR'nin en düşük dört biti sırasıyla F(onluk düzende 15) and 1'dir (onluk düzende 1). W'nin en düşük dört biti, FR'nin en düşük dört bitinden daha büyük olduğundan SUBWF işleminin sonucunda DC=0 olur.

Örnek:
W=0X1F ve SAYAC=0X20 olsun.
SUBWF SAYAC, 0 ;W=0x20-0X1F=0X01

Fakat aşağıdaki örnekte W'nin en düşük dört biti daha küçük olduğundan DC=1 olur.

Örnek:
W=0X01 ve SAYAC=0X0E olsun.
SUBWF SAYAC, W ;W=0X0E-0X01=0X0D

Carry Flag (C) Eğer FR, W'dan küçükse C=0, diğer durumlarda C=1 olur. Aşağıdaki örnekte W=50 ve SAYAC=250'dir. X

Örnek:
W=D'50' ve SAYAC=D'250' olsun.
SUBWF SAYAC, 0 ;W=250-50=200

Fakat, aşağıdaki örnekte W>N'dir ve C=0 olur.

Örnek:
W=D'190' ve SAYAC=D'63' olsun.
SUBWF SAYAC, W ;W=63-190=-127=129

Not: Tek bir SUBLW komutu her üç flag'i de aynı anda etkiler. Aşağıdaki örnekte, sonuç sıfırdan farklı olduğundan Z=0'dır. FR

Örnek:
W=0X0F ve SAYAC=0XFF olsun.
SUBWF SAYAC, 0 ;W=0XFF-0X0F=0XF0

INCF FR, H



INCF, FR'ye 1 ekler ve sonucu hedef H'ye yazar.

Örnek: Başlangıçta SAYAC=D'63' olsun.
INCF SAYAC, 0
komutu W=63+1=64 olmasına neden olur.

Not: INCF, FR'nin adresini değil içeriğini 1 artırır. Aşağıdaki örnekte SAYAC'ın adresi 0X20 fakat içeriği 0X05'dir. 0x20 adresi sonucu değiştirmez.

Örnek:
SAYAC EQU 0X20
...
MOVLW 0X05 ; W=0X05
MOVWF SAYAC ; SAYAC=0X05
INCF SAYAC, 1 ; SAYAC=0X05+1=0X06

ETKİLENEN FLAG'LER

INCF sadece Z'yi etkiler.
Zero Flag (Z) Eğer işlemden önce FR=255 ise Z=1 olur. 8-bitlik register'lar için 255'in bir fazlası 0 yapar. Diğer durumlarda Z=0 olur. Aşağıdaki örnekte sonuç 78 (255'ten farklı) olduğundan INCF sonucunda Z=0 olur.

Örnek:
Başlangıçta SAYAC=77 olsun.
INCF SAYAC, F
komutu SAYAC=78 olmasına neden olur. W aynı kalır. Hedef W (veya 0) olsaydı, W=78 olurdu ve SAYAC aynı kalır.

Fakat aşağıdaki örnekte sonuç 0 olduğundan (8-bitlik registerlar için 256=0'dır), INCF komutu sonucunda Z=1 olur.

Örnek:
SAYAC=255(veya 0XFF) olsun.
INCF SAYAC,1 ;SAYAC=255+1=256=0

DECF FR, H



DECF, FR'den 1 azaltır ve sonucu hedef H'ye yazar.

Örnek: Başlangıçta SAYAC=D'63' olsun.
DECF SAYAC, 0
komutu W=63-1=62 olmasına neden olur.

Not: DECF, FR'nin adresini değil içeriğini 1 azaltır. Aşağıdaki örnekte SAYAC'ın adresi 0X20 fakat içeriği 0X05'dir. 0x20 adresi sonucu değiştirmez.

Örnek:
SAYAC EQU 0X20
...
MOVLW 0X05 ; W=0X05
MOVWF SAYAC ; SAYAC=0X05
DECF SAYAC, 1 ; SAYAC=0X05-1=0X04

ETKİLENEN FLAG'LER

DECF sadece Z'yi etkiler.
Zero Flag (Z) Eğer işlemden önce FR=255 ise Z=1 olur. 8-bitlik register'lar için 255'in bir fazlası 0 yapar. Diğer durumlarda Z=0 olur. Aşağıdaki örnekte sonuç 76 (255'ten farklı) olduğundan INCF sonucunda Z=0 olur.

Örnek:
Başlangıçta SAYAC=77 olsun.
DECF SAYAC, F
komutu SAYAC=76 olmasına neden olur. W aynı kalır. Hedef W (veya 0) olsaydı, W=76 olurdu ve SAYAC aynı kalır.

Fakat aşağıdaki örnekte sonuç 0 olduğundan (8-bitlik registerlar için 256=0'dır), DECF komutu sonucunda Z=1 olur.

Örnek:
SAYAC=1 olsun.
DECF SAYAC,1 ;SAYAC=1-1=0

INCFSZ FR, H


DECFSZ FR'yi 1 azaltır ve sonucu hedef H'ye yazar. Sonuç sıfırsa, program bir sonraki komutu atlar.

Örnek: Başlangıçta SAYAC=D'63', olsun.
INCFSZ SAYAC, 1
GOTO LOOP1
GOTO LOOP2
SAYAC değerini 63-1=62 yapar ve sonuç 0 olmadığı için, program bir sonraki satırı işler ve LOOP1'ye atlar.

Örnek: Bu örnekte ise, başlangıçta SAYAC D'255',olsun.
INCFSZ SAYAC, 1
GOTO LOOP1
GOTO LOOP2
SAYAC'ı =255+1=0 yapar ve sonuç 0 olduğu için bir sonraki satır atlanır ve program LOOP2'ye geçer.

ETKİLENEN FLAG'LER

INCFSZ hiçbir flag'i etkilemez.

DECFSZ FR, H


DECFSZ FR'yi 1 azaltır ve sonucu hedef H'ye yazar. Sonuç sıfırsa, program bir sonraki komutu atlar.

Örnek: Başlangıçta SAYAC=D'63', olsun.
DECFSZ SAYAC, 1
GOTO LOOP1
GOTO LOOP2
SAYAC değerini 63-1=62 yapar ve sonuç 0 olmadığı için, program bir sonraki satırı işler ve LOOP1'ye atlar.

Örnek: Bu örnekte ise, başlangıçta SAYAC D'1',olsun.
DECFSZ SAYAC, 1
GOTO LOOP1
GOTO LOOP2
SAYAC'ı =1-1=0 yapar ve sonuç 0 olduğu için bir sonraki satır atlanır ve program LOOP2'ye geçer.

ETKİLENEN FLAG'LER

DECFSZ hiçbir flag'i etkilemez.

ANDLW N



ANDWF W ile FN'yi AND (VE) mantık işleminden geçirir (bknz. Doğruluk Tablosu) ve sonucu W'ya yazar.

Örnek: Başlangıçta W=0XAA=B'10101010', olsun.
ANDLW 0X0F
makes W=0X0F&0XAA=0X0A (see figure below)

ETKİLENEN FLAG'LER

ANDLW sadece Z'yi etkiler.
Zero Flag (Z) AND işleminin sonucunda 0 bulunuyorsa, Z=1 olur. Yukarıdaki örnekte sonuç 0X0A (0'dan farklı) olduğu için ANDWF komutu sonucunda Z=0 olur. Fakat aşağıdaki örnekte Z=1 olur.

Örnek:
MOVLW 0X0F ;
ADDLW 0XF0 ; W=0

ANDWF FR, H



ANDWF W ile FR'yi AND (VE) mantık işleminden geçirir (bknz. Doğruluk Tablosu) ve sonucu hedef H'ye yazar.

Örnek: Başlangıçta W=0XAA=B'10101010', olsun.
ANDWF SAYAC, 0
W=0X0F&0XAA=0X0A olmasına neden olur.

ETKİLENEN FLAG'LER

ANDWF sadece Z'yi etkiler.
Zero Flag (Z) AND işleminin sonucunda 0 bulunuyorsa, Z=1 olur. Yukarıdaki örnekte sonuç 0X0A (0'dan farklı) olduğu için ANDWF komutu sonucunda Z=0 olur. Fakat aşağıdaki örnekte Z=1 olur.

Örnek:
SAYAC=0XF0 olsun.
MOVLW 0X0F ;
ANDWF SAYAC, 0 ; W=0

IORLW N



IORLW, W ile N'yi OR (VEYA) mantık işleminden (bknz. Doğruluk Tablosu) geçirir ve sonucu W'ya yazar.

Örnek: Başlangıçta W=0XAA=B'10101010', olsun.
IORLW 0X0F
W=0X0F|0XAA=0XAF olmasına neden olur.

ETKİLENEN FLAG'LER

IORLW sadece Z'yi etkiler.
Zero Flag (Z) OR işleminin sonucunda 0 bulunuyorsa, Z=1 olur. Bu ancak FR ve W'den en az birininin 0 olduğu durumda gerçekleşir. Yukarıdaki örnekte sonuç 0XAF (0'dan farklı) olduğu için IORWF komutu sonucunda Z=0 olur. Fakat aşağıdaki örnekte Z=1 olur.

Örnek:
MOVLW 0X00 ;
IORLW 0X00 ; W=0

IORWF FR, H



IORWF W ile FR'yi OR (VEYA) mantık işleminden (bknz. Doğruluk Tablosu) geçirir ve sonucu hedef H'ye yazar.

Örnek: Başlangıçta W = 0XAA = B'10101010' ve SAYAC=0x0F=B'00001111' olsun.
IORWF SAYAC, 0
W=0X0F|0XAA=0XAF olmasına neden olur.

ETKİLENEN FLAG'LER

IORWF sadece Z'i etkiler.
Zero Flag (Z) OR işleminin sonucunda 0 bulunuyorsa, Z=1 olur. Bu ancak FR ve W'den en az birininin 0 olduğu durumda gerçekleşir. Yukarıdaki örnekte sonuç 0XAF (0'dan farklı) olduğu için IORWF komutu sonucunda Z=0 olur. Fakat aşağıdaki örnekte Z=1 olur.

Örnek:
Diyelimki SAYAC=0X00 olsun,
MOVLW 0X00 ;
IORWF SAYAC, 0 ; W=0

XORLW N



W ile N'yi XOR mantık işleminden (bknz. Doğruluk Tablosu) geçirir ve sonucu W'ya yazar.

Örnek: Başlangıçta W = 0XAA = B'10101010' olsun.
XORLW 0X0F
W=0X0F^0XAA=0XA5 olmasına neden olur.

ETKİLENEN FLAG'LER

XORLW yalnızca Z'i etkiler.
Zero Flag (Z) XOR işleminin sonucunda 0 bulunuyorsa, Z=1 olur (Bu yalnızca W=N olduğu durumda gerçekleşir). Yukarıdaki örnekte sonuç 0XA5 (0'dan farklı) olduğu için XORWF komutu sonucunda Z=0 olur. Fakat aşağıdaki örnekte Z=1 olur.

Örnek:
MOVLW 0XF3 ;
XORLW 0XF3 ; W=0

XORWF FR, H



W ile FR'yi XOR mantık işleminden geçirir (bknz. Doğruluk Tablosu) ve sonucu hedef H'ye yazar.

Örnek: Başlangıçta W = 0XAA = B'10101010' ve SAYAC = 0x0F = B'00001111' olsun.
XORWF SAYAC, 0
komutu W=0X0F^0XAA=0XA5 olmasını sağlar.

ETKİLENEN FLAG'LER

XORWF sadece Z'i etkiler.
Zero Flag (Z) XOR işleminin sonucunda 0 bulunuyorsa, Z=1 olur (Bu yalnızca FR=W olduğu durumda gerçekleşir). Yukarıdaki örnekte sonuç 0XA5 (0'dan farklı) olduğu için XORWF komutu sonucunda Z=0 olur. Fakat aşağıdaki örnekte Z=1 olur.

Örnek:
Diyelimki SAYAC=0XF3 olsun,
MOVLW 0XF3 ;
XORWF SAYAC, 0 ; W=0

COMF FR, H



COMF FR'nin her bir bitinin tersini alır ve sonucu hedef H'ye yazar.

Örnek: Başlangıçta SAYAC=0XAA=B'10101010' olsun.
COMF SAYAC, 0
W= SAYAC=0XAA=0X55 olmasına neden olur.

ETKİLENEN FLAG'LER

COMF sadece Z flag'ini etkiler.
Zero Flag (Z) FR'nin tersi 0 olduğu zaman Z=1 olur. Bu durum sadece FR=0XFF olduğu zaman gerçekleşir. Diğer tüm durumlarda Z=0 olur.

MOVLW



MOVLW N sabit sayısını W'ya kopyalar.

Örnek:
MOVLW 0X75
komutu W'yu 0X75 yapar.

ETKİLENEN FLAG'LER

Sonucun 0 olduğu durumda dahi, herhangi bir flag etkilenmemektedir.

MOVWF FR



MOVWF, W'yu FR'ye kopyalar.

Örnek:
Komut dizisinde sabit bir sayıyı bir register'a kopyalayacak bir komut bulunmamaktadır. Genellikle bunu gerçekleştirmek için aşağıdaki ikili kullanılmaktadır.
MOVLW 0X75
MOVWF SAYAC
Bu örnekteki ilk satır W'yu 0X75 yapar ve ikinci satır ise bu sayıyı SAYAC'a kaydeder. Bu iki satırın sonunda SAYAC=0X75.

ETKİLENEN FLAG'LER

Sonucun 0 olduğu durumda dahi, herhangi bir flag etkilenmemektedir.

MOVF FR, H



MOVF FR'yi hedefe (H) bağlı olarak W'ya ve kendi üzerine kopyalar

Örnek:
Eğer SAYAC=0X75 ise
MOVF SAYAC, 0
W'yu 0X75'e eşitler.

Not:
"MOVF FR, 1" komutunun FR veya W üzerine bir etkisi yoktur. Hedef 1 (veya F) olarak seçilirse MOVF komutu genellikle FR'nin 0 olup olmadığını kontrol eder.

ETKİLENEN FLAG'LER

MOVF sadece Z'yi etkiler.
FR=0 ise, Z=1 olur.

BCF FR, B


BCF FR'nin B. bitini 0 yapar.

Örnek:
Başlangıçta SAYAC=B'10101111' olsun.
BCF SAYAC, 3
komutu SAYAC=B'10100111' olmasını sağlar. Aşağıdaki şekli inceleyiniz.

Not:
Eğer FR'nin B. biti haluhazırda 0 ise, BCF komutu bir değişiklik yapmaz.

ETKİLENEN FLAG'LER

BCF hiçbir flag'i etkilemez.

BSF FR, B


BSF FR'nin B. bitini 1 yapar.

Örnek:
Başlangıçta SAYAC=B'10101111' olsun.
BCF SAYAC, 4
komutu SAYAC=B'10111111' olmasını sağlar. Aşağıdaki şekli inceleyiniz.

Not:
Eğer FR'nin B. biti haluhazırda 1 ise, BSF komutu bir değişiklik yapmaz.

ETKİLENEN FLAG'LER

BSF hiçbir flag'i etkilemez.

RRF FR, H


Carry Flag üzerinde FR'yi bir bit sağa kaydırır ve sonucu hedef H'ye yazar. En düşük (en sağdaki) bit Carry Flag'e (C) aktarılır. Carry flag FR'nin en yüksek (en soldaki) bite aktarılır. Aradaki tüm bitler bir basamak sağa kaydırılır.

Örnek:
Başlangıçta SAYAC=B'10101111' ve C=1 olsun.
RRF SAYAC, F
komutu SAYAC=B'11010111' ve C=1 olmasına neden olur. Aşağıdaki şekli inceleyiniz.

ETKİLENEN FLAG'LER

RRF sadece C flag'ini etkiler.
FR'nin en düşük biti C'ye taşınır.

RLF FR, H


Carry Flag üzerinde FR'yi bir bit sola kaydırır ve sonucu hedef H'ye yazar. En yüksek (en soldaki) bit Carry Flag'e (C) aktarılır. Carry flag FR'nin en düşük (en sağındaki) bite aktarılır. Aradaki tüm bitler bir basamak sola kaydırılır.

Örnek:
Başlangıçta SAYAC=B'10101111' ve C=1 olsun.
RLF SAYAC, F
komutu SAYAC=B'01011111' ve C=1 olmasına neden olur. Aşağıdaki şekli inceleyiniz.

ETKİLENEN FLAG'LER

RLF sadece C flag'ini etkiler.
FR'nin en yüksek biti C'ye taşınır.

CLRW


CLRW W'i siler (sıfırlar) ve Zero Flag'i 1 yapar.

ETKİLENEN FLAG'LER

CLRW sadece Z'i etkiler.
CLRW'den sonra, Z=1 olur.

CLRF FR


CLRF FR'yi siler (sıfırlar) ve Zero Flag'i (Z) 1 yapar.

Örnek:
Önceki değeri ne olursa olsun,
CLRF SAYAC
komutundan sonra SAYAC=0 olur.

ETKİLENEN FLAG'LER

CLRF sadece Z'yi etkiler.
CLRF'den sonra, Z=1 olur.

NOP


Hiç bir şey yapmaz, sadece program bu komutta bir komut sürelik (instruction cycle) zaman geçirir. Genellikle gecikme sağlamak için kullanılır.

ETKİLENEN FLAG'LER

NOP hiçbir flag'i etkilemez.

BTFSC FR, B


BTFSC FR'nin B. bitinin 0 olup olmadığını kontrol eder. Eğer bu bit 0 ise, programda bir sonraki komut işlenmeden atlanır. BTFSC herhangi bir değerde değişiklik yapmaz, sadece ilgili biti kontrol eder. B bitin register içerisindeki yerini göstermektedir. En düşük (en sağdaki) bit için, B=0'dır. En yüksek (en soldaki) bit için, B=7'dir.
Her zaman olmasa da çoğunlukla BTFSC Z, C ve/veya DC flag'lerinin durumunu kontrol etmek için kullanılır ( örneğin BTFSC STATUS, 2 Z flag'inin durumunu kontrol etmek için kullanılır).

Örnek:
SAYAC=B'10101111' ise
BTFSC SAYAC, 3
GOTO DONGU1
GOTO DONGU2
, SAYAC'ın 3. biti 1 olduğu için program bir sonraki adımda GOTO DONGU1 komutuna atlar.

Örnek:
Yine SAYAC=B'10101111' ise.
BTFSC SAYAC, 4
GOTO DONGU1
GOTO DONGU2
4. bit 0 olduğundan, program bir sonraki adımda GOTO DONGU2 komutuna atlar.

ETKİLENEN FLAG'LER

BTFSC hiçbir flag'i etkilemez.

BTFSS FR, B


BTFSS FR'nin B. bitinin 1 olup olmadığını kontrol eder. Eğer bu bit 1 ise, programda bir sonraki komut işlenmeden atlanır. BTFSS herhangi bir değerde değişiklik yapmaz, sadece ilgili biti kontrol eder. B bitin register içerisindeki yerini göstermektedir. En düşük (en sağdaki) bit için, B=0'dır. En yüksek (en soldaki) bit için, B=7'dir.
Her zaman olmasa da çoğunlukla BTFSS Z, C ve/veya DC flag'lerinin durumunu kontrol etmek için kullanılır ( örneğin BTFSS STATUS, 2 Z flag'inin durumunu kontrol etmek için kullanılır).

Örnek:
SAYAC=B'10101111' ise
BTFSS SAYAC, 3
GOTO DONGU1
GOTO DONGU2
, SAYAC'ın 3. biti 1 olduğu için program bir sonraki adımda GOTO DONGU2 komutuna atlar.

Örnek:
Yine SAYAC=B'10101111' ise.
BTFSS SAYAC, 4
GOTO DONGU1
GOTO DONGU2
4. bit 0 olduğundan, program bir sonraki adımda GOTO DONGU1 komutuna atlar.

ETKİLENEN FLAG'LER

BTFSS hiçbir flag'i etkilemez.

SWAPF FR, H


SWAPF FR'nin ilk ve son dört bitini yer değiştirir ve sonucu hedef H'ye yazar.

Örnek:
Aşağıdaki komuttan önce SAYAC=B'00001111' ise,
SWAPF SAYAC, 1
komutundan sonra şekilde gösterildiği gibi SAYAC=B'11110000' olur.

ETKİLENEN FLAG'LER

SWAPF hiçbir flag'i etkilemez.

GOTO ETİKET


GOTO programı ETİKET'in bir altındaki satıra yönlendirir.

Örnek:
Aşağıdaki programda, DONGU1, DONGU2 ve DONGU3 etiketleri temsil etmektedir. Program 2. satırdayken GOTO DONGU3 komutundan dolayı DONGU3 ile etiketlenen 6. satıra atlar. Daha sonra GOTO DONGU2 komutundan dolayı DONGU2 ile etiketlenmiş olan 4. satıra atlar. Sonrasında ise bu satırda bulunan GOTO DONGU2 komutundan dolayı tekrar 2. satıra döner ve bu süreç sonsuz defa tekrarlanır.
1 DONGU1
2 GOTO DONGU3
3 DONGU2
4 GOTO DONGU1
5 DONGU3
6 GOTO DONGU2

ETKİLENEN FLAG'LER

GOTO hiçbir flag'i etkilemez.

SLEEP


SLEEP komutundan sonra mikrodenetleyici uyku moduna geçer. Uyku modu düşük akım ve düşük güç çeker. Kullanıcı uyku modundan mikrodenetleyiciyi

ile çıkarabilir.

ETKİLENEN FLAG'LER

SLEEP komutundan sonra TO=1 ve PD=0 olur.

CLRWDT


CLRWDT, Watch Dog Timer'ı siler.

ETKİLENEN FLAG'LER

TO ve PD bu komuttan sonra 1 olur.

CALL ETİKET


ETİKET ile tanımlanmış rutini çağırır.

ETKİLENEN FLAG'LER

CALL hiçbir flag'i etkilemez.

RETURN


Çağrılan rutinden dönmeyi sağlar.

ETKİLENEN FLAG'LER

RETURN hiçbir flag'i etkilemez.

RETFIE


Kesme (Interrupt) rutininden dönmek için kullanılır.

ETKİLENEN FLAG'LER

RETFIE hiçbir flag'i etkilemez.

RETLW N


Rutinden dönmek için kullanılır. Bu komuttan sonra W, N'ye eşit olur.

ETKİLENEN FLAG'LER

RETLW hiçbir flag'i etkilemez.