Soy nuevo en montaje y AVR. ¿Cuál es la mejor manera de comparar dos valores como en C:
#define SOME_VAL 55
int current_counter = 0;
...
...
if(current_counter==SOME_VAL) {
}
En ensamblador tengo el siguiente código:
.EQU SOME_VAL = 55
.def current_counter = r19
¿Cuál es la mejor manera de comparar el valor actual con una constante definida?
La instrucción que necesita tiene el mnemotécnico CPI (comparar con inmediato).
Esto establecerá o borrará una bandera dependiendo del resultado.
Luego puede ramificar después de verificar la bandera.
Echa un vistazo al siguiente ejemplo. Es del resumen de instrucciones AVR de [8 bits] ( http://www.atmel.com/images/doc0856.pdf ).
El siguiente ejemplo es de la página 24:
Ejemplo:
cpi r20,5 ; Compare r20 to the value 5
brbc 1,noteq ; Branch if Zero Flag cleared
...
noteq:nop ; Branch destination (do nothing)
Hay otras instrucciones que harán comparaciones ligeramente diferentes (como comparar dos registros, en lugar de comparar un registro con un literal).
nick johnson
mate joven
Greg de Eon
Mewa