La mejor manera de comparar el valor en el registro con un AVR de ensamblaje constante

1

Soy nuevo en el 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?

    
pregunta solderingiron

1 respuesta

4

La instrucción que necesita tiene el CPI mnemotécnico (comparar con inmediato).

Esto establecerá o borrará una bandera dependiendo del resultado.

Luego puedes bifurcar después de verificar la bandera.

Echa un vistazo al siguiente ejemplo. Es del resumen de instrucciones de AVR [8 bits] ( enlace ).

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).

    
respondido por el user57709

Lea otras preguntas en las etiquetas