Ir al contenido

Comparar con cero

El examen pregunta en la Parte I:

¿Por que se usa MOVF REGISTRO,F para comparar con cero?

Esta pagina te da la respuesta completa que el profesor espera.

  1. MOVF REGISTRO,F mueve el registro sobre si mismo (destino F = el mismo registro).
  2. Esa operacion actualiza la bandera Z del STATUS.
  3. Si REGISTRO = 0Z = 1. Si no → Z = 0.
  4. La bandera relevante es Z, no C.

MOVF no es una resta. No genera prestamo ni acarreo de la misma forma que SUBWF. Para igual a cero, el curso ensena MOVF + Z, no probar C.

Si en el examen marcas que usas C para comparar con cero tras MOVF, la respuesta es incorrecta.

Variante con BTFSS (salta si Z=1 → era cero)

Sección titulada «Variante con BTFSS (salta si Z=1 → era cero)»
MOVF REGISTRO,F
BTFSS STATUS,Z ; ¿Z=1?
GOTO NO_ES_CERO ; no salta si Z=1 → no era cero
GOTO ES_CERO ; Z=1 → era cero
REGISTROZ despues de MOVF¿Salta BTFSS?Flujo
01SiVa a ES_CERO
≠ 00NoVa a NO_ES_CERO
MOVF REGISTRO,F
BTFSC STATUS,Z ; salta si Z=0 (no es cero)
GOTO ES_CERO
GOTO NO_ES_CERO

Ambas son correctas; elige la que haga mas legible tu flujo hacia ES_CERO o NO_ES_CERO.

MOVF REGISTRO,F
BTFSC STATUS,Z ; salta si Z=0 → no es cero
GOTO ES_DISTINTO_CERO
GOTO ES_CERO

¿Se puede usar SUBWF para comparar con cero?

Sección titulada «¿Se puede usar SUBWF para comparar con cero?»

Si:

MOVLW .0
SUBWF A,W ; A - 0
BTFSS STATUS,Z

Funciona, pero el metodo oficial del curso para cero es MOVF A,F. En la pregunta teorica del parcial responde con MOVF y Z.

Para ¿A = 5?:

MOVLW .5
SUBWF A,W
BTFSS STATUS,Z
GOTO A_NO_ES_5
GOTO A_ES_5

Aqui si usas resta porque comparas con un valor distinto de cero.

Ejercicio · Parcial

Pregunta teorica (escrita)

Redacta en 3-4 lineas: ¿Por que MOVF REGISTRO,F compara con cero usando Z y no C?

Siguiente: Entre registros — igual, menor, mayor y tabla del parcial.

Examen interactivo

Comparar con cero

Basado en: Clase Tema 4 y 5.pdf

0 de 0 respondidas

MOVF REGISTRO,F compara con cero usando la bandera...
Si REGISTRO=0 tras MOVF REGISTRO,F, Z vale...
¿Por que MOVF,F y no solo mirar C para cero?
Para detectar "no es cero" usas tipicamente...
Comparar A con el literal 5 se hace con...