Comprovar si un valor és zero o no és molt senzill ja que el bit d'estat Z ens diu si en resultat d'una operació és zero. En cas que no necessitem fer cap operació, podem copiar la variable sobre ella mateixa.
movf variable,f btfsc STATUS,Z goto Zero NoZero ... Zero
En cas de ser un valor de 16 bits, cal fer-ho dos cops ja que els dos bytes han de ser zero.
movf variable,f ; Mirem un dels dos bytes btfss STATUS,Z goto NoZero ; Si aquest no és zero ja estem movf variable+1,f ; Si un és zero, mirem l'altre btfss STATUS,Z goto NoZero ; Si aquest no és zero Zero ; Si tots dos són zero ... NoZero
Una manera senzilla de comparar l'acumulador amb una variable o un valor és fer servir la funció xor (o exclusiva). Aquesta funció donarà 0 en les parelles de bits que coincideixin i 1 en les que no coincideixin. Per tant si tots els bits són iguals el resultat serà 0 i s'activarà el bit Z. El següent diagrama ho mostra.

xorwf variable,w btfsc STATUS,Z goto Iguals Diferents ... Iguals
xorwf variable,w btfss STATUS,Z goto Diferents Iguals ... Diferents
A l'Exemple CP podeu veure una possible implementació.
Per comparar si un número és més petit que un altre podem fer servir la funció resta (deixant el resultat a l'acumulador) ja que sabem que s'activa C si el resultat és positiu.
subwf variable,w ; W = variable - W btfss STATUS,C ; C = 1 si variable >= W goto MesPetit ; variable < W MesGranIgual ; variable >= W ... MesPetit ; variable < W
Anem llegint o calculant un valor i volem trobar el seus màxim i mínim.
A continuació hi ha un tros de programa. A la primera part inicialitzem max i min, respectivament, a 0 i a FFh i a la segona anem comparant Lectura per trobar-ne el màxim i el mínim.
... ; Inicialització de les variables clrf max ; Posa el valor màxim a zero movlw 0xFF ; Posa el mínim al més alt possible movwf min ; o sigui, FFh ... ; Recollim el màxim movf max,w ; W té el màxim subwf Lectura,w ; W = Lectura - W = Lectura - max btfss STATUS,C ; C = 1 si Lectura >= max goto MenorMax ; Si és més petit, no cal fer res movf Lectura,w movwf max MenorMax ; Recollim el mínim movf min,w ; W té el mínim subwf Lectura,w ; W = Lectura - W = Lectura - min btfsc STATUS,0 ; C = 0 si Lectura < min goto MajorMin ; Si és més gran, no cal fer res movf Lectura,w movwf min MajorMin ...
Anem llegint o calculant un valor i volem trobar el seus màxim i mínim.
Hi ha dues possibilitats de que Lectura > max:
Cas 1: Lectura+1 = max+1 i Lectura > max Cas 2: Lectura+1 > max+1
i dues possibilitats de que Lectura < min:
Cas 1: Lectura+1 = min+1 i Lectura < min Cas 2: Lectura+1 < min+1
A continuació hi ha un tros de programa. A la primera part inicialitzem max i min, respectivament, a 0 i a FFFFh i a la segona anem comparant Lectura per trobar-ne el màxim i el mínim.
... ; Inicialització de les variables clrf max ; Posa el valor màxim a zero clrf max+1 movlw 0xFF ; Posa el mínim al més alt possible movwf min ; o sigui, FFFFh movwf min+1 ... ; Recollim el màxim movf max+1,w ; W té el màxim xorwf Lectura+1,w ; Comparem amb Lectura+1 btfss STATUS,Z ; Si Z = 1 eren iguals goto DifMax ; Si són diferents, provem el cas 2 movf max,w ; W té el màxim subwf Lectura,w ; W = Lectura - W = Lectura - max btfss STATUS,C ; C = 1 si Lectura >= max goto MenorMax ; Si és més petit, no cal fer res goto NouMax ; Si és més gran, cal guardar-lo DifMax movf max+1,w ; W té el màxim subwf Lectura+1,w ; W = Lectura+1 - W = Lectura+1 - max+1 btfss STATUS,C ; C = 1 si Lectura+1 >= max+1 goto MenorMax ; Si és més petit, no cal fer res NouMax movf Lectura+1,w ; Copiem Lectura a max movwf max+1 movf Lectura,w movwf max MenorMax ; Recollim el mínim movf min+1,w ; W té el mínim xorwf Lectura+1,w ; Comparem amb Lectura+1 btfss STATUS,Z ; Si Z = 1 eren iguals goto DifMin ; Si són diferents, provem el cas 2 movf min,w ; W té el mínim subwf Lectura,w ; W = Lectura - W = Lectura - min btfsc STATUS,0 ; C = 0 si Lectura < min goto MajorMin ; Si és més gran, no cal fer res goto NouMin ; Si és més petit, cal guardar-lo DifMin movf min+1,w ; W té el mínim subwf Lectura+1,w ; W = Lectura+1 - W = Lectura+1 - min+1 btfsc STATUS,C ; C = 0 si Lectura+1 < min+1 goto MajorMin ; Si és més petit, no cal fer res NouMin movf Lectura+1,w ; Copiem Lectura a min movwf min+1 movf Lectura,w movwf min MajorMin ...

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.