Entendiendo la instrucción del ensamblador AVR

0

Desde aquí , tengo el siguiente ejemplo:

clr r16 ; Clear r16
ser r17 ; Set r17
out $18,r16 ; Write zeros to Port B
nop ; Wait (do nothing)
out $18,r17 ; Write ones to Port B

Mi pregunta es que ¿qué significa $18 en la última línea?

Sé que significa PortB. Me gustaría saber más sobre su sintaxis.

    
pregunta Babu James

1 respuesta

7

Si observa el mapa de memoria AVR, verá que la dirección de PortB es $ 18 (hexadecimal) (que se escribiría como 0x18 en la sintaxis de C-- varía con los ensambladores, a menudo aceptarán el método C) . Es equivalente al decimal 24 (1 * 16 + 8) ya que hex es la base 16.

Es correcto, pero es feo escribir un código de ensamblador como ese. Normalmente, preferirías usar un archivo de inclusión que tenga una línea como

.EQU PORTB, 0x18

luego de lo cual puedes referirte a PortB usando el símbolo PORTB, que es mucho más fácil de seguir

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas