AVR Assembler Labels

2

De acuerdo con doc1022, p. 17 (Guía del usuario del ensamblador AVR):

  

Etiquetas definidas por el usuario que reciben el valor del contador de ubicación en el lugar donde aparecen.

Mi pregunta es: ¿qué pasa en el código de operación cuando se usa una etiqueta en jmp y en una instrucción rjmp , ya que una etiqueta es realmente el valor del contador de ubicación en el lugar donde aparece la etiqueta? En segundo lugar, si existe un documento oficial (o no oficial) que responde a mi pregunta, ¿sabe dónde puedo encontrarlo?

    
pregunta Utku

1 respuesta

2

El código de operación tendrá la mayoría de sus bits reservados para mantener una dirección. El número de bits puede variar porque a veces la dirección es absoluta y, a veces, es relativa (las direcciones relativas son desplazamientos y, por lo tanto, números más pequeños). El valor real que se coloca en estos bits es un cálculo basado en el valor de la etiqueta que se utiliza. Para direccionamiento absoluto es solo el valor de la etiqueta. Para el direccionamiento relativo, el valor del campo operando se calcula restando el contador del programa actual (donde aparece la instrucción de salto) de la dirección mencionada en la etiqueta. Esas son dos ubicaciones diferentes.

Cuando el ensamblador ve una etiqueta, utiliza su valor como si hubiera especificado el número en su lugar. Parte de la utilidad de un ensamblador es que realiza un seguimiento de la PC a medida que se compila el programa y, por lo tanto, puede asignar la dirección correcta a una etiqueta cuando aparece.

Esta respuesta es un tanto genérica, ya que no he trabajado con el código de ensamblaje de AVR.

Actualización: busqué en "Guía de usuario del ensamblador AVR" para encontrar la referencia en su pregunta. Al mismo tiempo, si se encuentra "AVR Assembler - - Atmel Corporation" que enlaza con un documento que muestra cómo se agrupan las instrucciones. Vea la sección llamada "Instrucciones".

    
respondido por el gbarry

Lea otras preguntas en las etiquetas