Ir al contenido

Banderas C y Z en comparaciones

Cuando comparas registros con SUBWF, el PIC actualiza automaticamente C y Z en STATUS. El Segundo Parcial pide explicar esos bits en la parte teorica y predecir sus valores en la parte de desarrollo.

BitNombreEn comparaciones (resta unsigned)
0CAcarreo / bit de prestamo en resta
2ZResultado cero

El PDF del curso dice: C actua como el bit 9 del resultado en operaciones sin signo. En resta A − B:

SituacionCSignificado
No hubo prestamo (A ≥ B en unsigned)1Resultado valido sin borrow
Hubo prestamo (A < B en unsigned)0A era menor que B
SituacionZ
Resultado de la operacion = 01
Resultado ≠ 00

SUBWF f,d calcula:

(f) − WREG → destino d

Pasos para comparar A con B haciendo A − B:

MOVF B,W ; W = B
SUBWF A,W ; W = A - B (actualiza C y Z)
  • Destino W (d=0): resultado en WREG, A en memoria no cambia.
  • Destino f (d=1): resultado se guarda en A (cuidado: destruyes A si no te conviene).

En comparaciones del curso casi siempre usas SUBWF A,W para no modificar A.

InstruccionSalta si…
BTFSS STATUS,ZZ = 1
BTFSC STATUS,ZZ = 0
BTFSS STATUS,CC = 1
BTFSC STATUS,CC = 0

SS = Skip if Set (salta si el bit esta en 1).
SC = Skip if Clear (salta si el bit esta en 0).

La eleccion entre BTFSS y BTFSC depende de a que etiqueta quieres ir cuando la condicion es verdadera o falsa.

Tras A − B con MOVF B,W + SUBWF A,W:

RelacionCondicionBandera principal
A = BResultado 0Z = 1
A > BSin prestamo y no ceroC = 1 y Z = 0
A < BCon prestamoC = 0
A ≥ BSin prestamoC = 1 (Z puede ser 0 o 1)
A ≤ BCero o prestamoC = 0 o Z = 1
; A - B
MOVF B,W
SUBWF A,W
; B - A (¡distinto resultado en STATUS!)
MOVF A,W
SUBWF B,W

En el parcial, si comparas REG1 con REG2, define explicitamente: ¿estas calculando REG1 − REG2 o REG2 − REG1?

Ejercicio · Parcial

Prediccion rapida

A=8, B=8: ¿C? ¿Z?
A=12, B=5: ¿C? ¿Z?
A=1, B=10: ¿C? ¿Z?

Siguiente: Igual a cero — caso especial que el examen pregunta aparte con MOVF.

Examen interactivo

Banderas C y Z

Basado en: Clase Tema 4 y 5.pdf

0 de 0 respondidas

En resta unsigned, C=0 tras A−B indica usualmente...
La bandera Z=1 tras una operacion significa...
SUBWF f,d calcula...
BTFSC STATUS,C salta si...
Para A > B tras A−B necesitas C=1 y...
En el PDF, C actua como el bit...