Comparar dos registros
Todas las comparaciones entre dos registros A y B pasan por calcular A − B con MOVF B,W y SUBWF A,W, luego leer C y Z.
Igual (A = B)
Sección titulada «Igual (A = B)»MOVF B,WSUBWF A,WBTFSS STATUS,Z ; Z=1 → igualesGOTO A_NO_IGUAL_BGOTO A_IGUAL_B| Si A=B | A−B | Z | C |
|---|---|---|---|
| Si | 0 | 1 | 1 |
Menor que (A < B)
Sección titulada «Menor que (A < B)»MOVF B,WSUBWF A,WBTFSC STATUS,C ; C=0 → A < BGOTO A_ES_MENOR_BGOTO A_NO_ES_MENOR_BCuando A < B (unsigned), hay prestamo → C = 0.
Mayor que (A > B)
Sección titulada «Mayor que (A > B)»MOVF B,WSUBWF A,WBTFSS STATUS,C ; ¿C=1?GOTO A_NO_ES_MAYOR_BBTFSS STATUS,Z ; ¿Z=0? (no iguales)GOTO A_ES_MAYOR_BGOTO A_NO_ES_MAYOR_BA > B requiere C = 1 y Z = 0 (sin prestamo y resultado no cero).
Mayor o igual (A ≥ B)
Sección titulada «Mayor o igual (A ≥ B)»Solo necesitas C = 1 (incluye el caso A = B donde Z = 1):
MOVF B,WSUBWF A,WBTFSS STATUS,CGOTO A_MENOR_B; aqui A >= BMenor o igual (A ≤ B)
Sección titulada «Menor o igual (A ≤ B)»C = 0 o Z = 1:
MOVF B,WSUBWF A,WBTFSS STATUS,Z ; A = BGOTO A_IGUAL_BBTFSC STATUS,C ; A < B si C=0GOTO A_MENOR_B; ...Tabla resumen del PDF (operacion A − B)
Sección titulada «Tabla resumen del PDF (operacion A − B)»| Operacion A−B | C | Z | Comprobar (nota del PDF) |
|---|---|---|---|
| A = B | 1 | 1 | Z |
| A > B | 1 | 0 | C y Z |
| A < B | 0 | 0 | C |
| A ≥ B | 1 | 0 o 1 | C |
| A ≤ B | 0 o 1 | 1 | C o Z |
Inciso del parcial: valores de C y Z
Sección titulada «Inciso del parcial: valores de C y Z»Tras MOVF B,W y SUBWF A,W:
| Caso | A | B | A−B | C | Z |
|---|---|---|---|---|---|
| a) | 10 | 10 | 0 | 1 | 1 |
| b) | 5 | 3 | 2 | 1 | 0 |
| c) | 2 | 7 | prestamo | 0 | 0 |
Ejercicio · Parcial
Completar tabla
A=15, B=8 → ¿C? ¿Z?
A=0, B=1 → ¿C? ¿Z?
Solucion: A=15,B=8 → C=1,Z=0. A=0,B=1 → C=0,Z=0.
Subrutina del parcial: REG1 > REG2
Sección titulada «Subrutina del parcial: REG1 > REG2»Enunciado: Si REG1 es mayor que REG2, saltar a la etiqueta MAYOR.
COMPARAR MOVF REG2,W SUBWF REG1,W ; REG1 - REG2 BTFSS STATUS,C ; C=0 → no es mayor (REG1 < REG2) GOTO FIN_COMP BTFSS STATUS,Z ; Z=1 → son iguales GOTO MAYOR ; C=1 y Z=0 → REG1 > REG2FIN_COMP RETURNMAYOR ; codigo cuando REG1 > REG2 RETURNVariante con una sola rama a MAYOR y RETURN en otro lado segun pida el enunciado.
Comparar B − A (orden inverso)
Sección titulada «Comparar B − A (orden inverso)»Si el enunciado dice “¿REG2 mayor que REG1?”, calcula REG2 − REG1:
MOVF REG1,WSUBWF REG2,W ; REG2 - REG1; luego mismas pruebas de C y ZChecklist antes del parcial (comparaciones)
Sección titulada «Checklist antes del parcial (comparaciones)»- MOVF,F + Z para cero (teoria)
- Explicar C y Z en resta (teoria)
- Tabla A=10,B=10 / 5,3 / 2,7
- Subrutina REG1 > REG2
- Saber cuando usar solo C, solo Z, o ambos
Comparar dos registros — parcial
Basado en: Clase Tema 4 y 5.pdf
0 de 0 respondidas
Inicia sesion en CALETAS para sincronizar este resultado entre dispositivos.
Iniciar sesion en CALETAS