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.

Igualdad


Supongamos que estamos intetando determinar si un número es igual a 2.
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.

Mayor que y menor que


Supongamos que estamos intetando determinar si un número mayor o menor de 2. 
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: 
MOVF N, W 
SUBLW .2 ; W = 2 - N 
BTFSS STATUS, C 
GOTO MAYOR 
GOTO MENOR_IGUAL 

Comentarios

Entradas populares