Ir al contenido

Comparacion de registros

En ensamblador casi toda decision pasa por comparar: ¿llego la temperatura al umbral?, ¿la tecla es la opcion 3?, ¿REG1 es mayor que REG2? El PIC18 no tiene una instruccion CMP como otros procesadores; comparas haciendo una operacion (casi siempre resta) y leyendo STATUS.

CasoMetodo tipico
Registro igual a ceroMOVF A,F → probar Z
Registro igual a otroMOVF B,W / SUBWF A,W → probar Z
Registro menor o mayorMisma resta → probar C (y Z si hace falta)

Tambien puedes comparar dato literal con registro (MOVLW + SUBWF) o dato con dato (cargando uno en W). El procedimiento es el mismo.

  1. Temperatura vs valor deseado (tras ADC) → igual o mayor/menor.
  2. UART — ¿el caracter recibido es el esperado? → igual.
  3. Menu de teclado — ¿que tecla coincide con la lista? → varias comparaciones.
  4. Control en rango — ¿variable por debajo o encima del limite? → menor / mayor.

En el parcial aparecen en forma directa (tabla C/Z, REG1 > REG2) y en problemas (robot: ¿que sensor ve linea negra?).

PaginaContenidoPregunta del parcial
Banderas C y ZSTATUS, resta, bit 9Parte I: explicar C y Z
Igual a ceroMOVF REGISTRO,FParte I: ¿por que MOVF y no C?
Entre registrosIgual, <, >, ≥, ≤Parte II: subrutina y tabla A,B

Si necesitas repaso del registro STATUS, ver Arquitectura — STATUS. Esta seccion aplica eso a comparaciones paso a paso.

Ejercicio · Parcial

Antes de seguir

Sin mirar solucion: si A=5 y B=3, ¿A−B es cero? ¿positivo? ¿que esperas de Z y C? Comprueba en Entre registros.

Lee Banderas C y Z — sin eso no puedes resolver la tabla del inciso 2 del examen.

Examen interactivo

Introduccion — Comparacion de registros

Basado en: Clase Tema 4 y 5.pdf

0 de 0 respondidas

El PIC18 no tiene instruccion CMP; se compara usualmente con...
Para comparar un registro con CERO se usa preferentemente...
Para comparar dos registros A y B la operacion base es...
A − B y B − A en STATUS dan...
Tras SUBWF para comparar, las banderas mas usadas son...