ASM. comparación de valores
Las operaciones de comparación utilizan la instrucción de resta. La resta no es mas que sumar al minuendo el complemento a 2 del sustraendo.
Supongamos que estamos intetando determinar si un número es igual a 2.
Igualdad
MOVLW .2
SUBWF N, W ; W = N - 2
BTFSS STATUS, Z
GOTO NO_ES_IGUAL
GOTO ES_IGUAL
Al número a comprobar (N) se le resta la cantidad de comparación (2) que se ha guardado en W. El resultado vuelve a guardarse en W para salvaguardar la variable N. Finalmente se comprueba la bandera Zero del registro Status.
Supongamos que estamos intetando determinar si un número mayor o menor de 2.
Al número a comprobar (N) se le resta la cantidad de comparación (2) que se ha guardado en W. El resultado vuelve a guardarse en W para salvaguardar la variable N. Finalmente se comprueba la bandera Zero del registro Status.
Mayor que y menor que
MOVLW .2
SUBWF N, W ; W = N - 2
BTFSS STATUS, C
GOTO MENOR
GOTO MAYOR_IGUAL
Aqui se comprueba la bandera C. Si Carry es 1 el resultado es positivo y si es 0 es negativo. Así, si N<2 entonces el programa va a MENOR. Si N es igual o mayor a 2 se salta a MAYOR_IGUAL.
Así, el código anterior:
N<2 MENOR
N>=2 MAYOR_IGUAL
Otra posibilidad es la siguente:
Aqui se comprueba la bandera C. Si Carry es 1 el resultado es positivo y si es 0 es negativo. Así, si N<2 entonces el programa va a MENOR. Si N es igual o mayor a 2 se salta a MAYOR_IGUAL.
Así, el código anterior:
N<2 MENOR
N>=2 MAYOR_IGUAL
Otra posibilidad es la siguente:
MOVF N, W
SUBLW .2 ; W = 2 - N
BTFSS STATUS, C
GOTO MAYOR
GOTO MENOR_IGUAL
Comentarios
Publicar un comentario