martes, 21 de enero de 2020

Uso de la instrucción "LD" y "ST"

LD(Load Indirect from SRAM(data Space) To Register using Index Y,X

  • Se carga Rd con el contenido que apunta el registro apuntador Y.
  • Carga indirecta del espacio de datos hacia Rd.

Instrucción LD
Como pueden ver  esta instrucción es muy similar a la instrucción LDS, pero ahora vemos que usa el registro Y(16 bits), éste registro Y, la cual  se usa como apuntador de dirección.

Descripción y puntos importantes.

  •  Para usar esta instrucción se debe cargar previamente el apuntador Y, ya que según  la dirección que este apuntado "Y" va a mover el dato que esta en esta dirección y la colocará en Rd .
  • En algunos casos en vez de "Y" encontraremos "Y+" o "-Y" , eso quiere decir que cuando se ejecute la instrucción va a aumentar o disminuir este registro apuntador"Y" de 16 bits.
  • Esta instrucción no la cuenta todos los microcontroladores ATMEL
  • Para algunos microcontroladores ATMEL que solo tienen 256Bytes de memoria solo es suficiente usar 8 bits(los menos significativos).
  • Para microcontroladores ATMEL con mayor memoria de datos ya se usan los 16 bits.
  • Recordemos que  la pila se ubica en la SRAM interno y su inicio es la última dirección de memoria, para el caso del Atmega32 la última dirección(RAMEND) es 0x85F.
  • Se pueden usar los punteros X,Y, los dos  de 16 bits.
  • Debemos tener en cuenta que el puntero X esta formado por los registros R26,R27, el puntero Y está formado por los registros R28,R29 y finalmente el puntero Z esta formado por los registros R30,R31, como se muestra en la siguiente imagen:
Punteros

Ejemplo

------------------------------------------------------------------------------------------------------------------------------------------------------
Agregar el contenido de la ubicación de la dirección de 0X1F(Correspondiente a R31) hacia el registro R16.
Código
Este es un método indirecto de cargar valores dentro la memoria de datos según la dirección que deseemos  de SRAM hacia la misma SRAM. 
Debug
------------------------------------------------------------------------------------------------------------------------------------------------------
ST(Store Indirect From Register to Data Space using index X,Y

  • Se carga el valor de la dirección apuntada por  Y con el contenido de Rr, 0<=r<=31
  • Carga indirecta de Rr  hacia la dirección de SRAM apuntada por Y.
Instrucción ST
  • Como pueden ver  esta instrucción es muy similar a la instrucción STS, pero ahora vemos que usa el registro Y(16 bits), éste registro Y, la cual  se usa como apuntador de dirección.
  • Como se observa este es el proceso inverso de la instrucción LD.
  • En algunos casos en vez de "Y" o "X" encontraremos "Y+" ,"-Y","X+","-X" , eso quiere decir que cuando se ejecute la instrucción va a aumentar o disminuir este registro apuntador"Y" o "X" de 16 bits.

Ejemplo

------------------------------------------------------------------------------------------------------------------------------------------------------
Agregar el contenido de la ubicación del registro R16 hacia la dirección de X.
------------------------------------------------------------------------------------------------------------------------------------------------------

Código

Este es un método indirecto de cargar valores dentro la memoria de datos según la dirección que deseemos  de SRAM hacia la misma SRAM. 
Debug
------------------------------------------------------------------------------------------------------------------------------------------------------

No hay comentarios:

Publicar un comentario

Uso del firmware original de la grabadora USBasp AVR en MX-USBASP (clon chino)

Te vendieron un USBisp pensado que es un USBasp?? Hace 2 meses compré un "USBasp" fui a probarlo y no funcionó....pensé me estafar...