Вы находитесь на странице: 1из 8

SISTEMAS DIGITALES 3

MANEJO DE MEMORIA

LUNA MARTINEZ BONI URIEL

25/ OCT/2018

1
Resumen

El manejo de memoria es una tarea relativamente sencilla. Tomando en cuenta que


debe tenerse claro el concepto de cómo se maneja. En el siguiente reporte se
muestra que es lo que se debe de hacer para almacenar datos en una dirección en
específica. Resulta fácil ya que conocemos la dirección y los valores a introducir.

2
Índice

INTRODUCCIÓN ---------------------------------------------------------------------- 4 -

DESCRIPCIÓN DEL PROBLEMA ------------------------------------------------ 4 -

SOLUCIÓN PROPUESTA----------------------------------------------------------- 5 -

RESULTADOS ------------------------------------------------------------------------- 5 -

CONCLUSIONES ---------------------------------------------------------------------- 6 -

REFERENCIAS ------------------------------------------------------------------------ 6 -

APÉNDICES ---------------------------------------------------------------------------- 7 -

CÓDIGO-----------------------------------------------------------------------------------8
-

3
Introducción

La memoria es de suma importancia para cualquier procesador porque es la


encargada de manejar datos ya sea para almacenarlo o para retenerlos,
dependiendo el tipo de memoria que se necesita para la tarea. Un administrador de
memoria será el encargado de realizar la tarea de darle un espacio a cada dato en
la memoria, además de intercambiar datos con otras memorias. Esto nos llevara a
que se pueda utilizar estas mismos espacios cuando, dejándolos libres para escribir
una nueva información, agilizando el procesamiento de información sin desperdiciar
recursos.

Descripción del problema

El problema a resolver es escribir un programa que almacene los valores {00, 01,
02, 03, 04, 05, 06, 07, 08,09} en la dirección de memoria 0x1FFFF0F0 Hexadecimal.

4
Solución propuesta

Para resolver el problema se usó un puntero tipo char, el cual permite almacenar 1
byte de memoria, y no es necesario gastar más recurso para almacenar estos
valores, el puntero nos permite apuntar en la dirección de memoria requerida
0x1FFFF0F0. Al hacer la asignación =0x1FFFF0F0, se dice que es la dirección de
memoria hacia dónde va el apuntador. Así guardara los numero del 0 al 9 en
hexadecimal de mayor a menor

Resultados

Revisando la memoria que si indico en el programa podemos ver que los valores
están almacenados en la memoria de forma ordenada

5
Conclusiones
Se puede observar que es sencillo almacenar valores en cierta dirección de
memoria, aunque cabe mencionar que la que se utilizó en el programa es memoria
RAM, lo cual nos lleva a la conclusión de que puede ser leída y escrita.

Referencias:
http://www2.elo.utfsm.cl/~lsb/elo320/clases/c3.pdf
https://ingenieriaticelaya.files.wordpress.com/2014/09/manejo-de-memoria.pdf
notas de clase.

6
Apéndices
El microprocesador utilizado almacena instrucciones y datos conforme a la tarea
que se esté realizando.
En este caso la memoria utilizada es RAM, significa que puede ser leída y escrita
las veces que se necesiten, aunque no siempre podremos tener cierta información
a nuestra disposición porque solo almacena cuando la tarjeta está conectada. Se
podría decir que tiene un almacenamiento temporal.
Ahora un puntero es una variable que contiene la dirección de memoria de un dato
o de otra variable. El puntero apunta al espacio físico donde se encuentra la
variable. Un puntero nos permite sumar o restar números enteros, pero su
funcionamiento es de posiciones, lo que significa que podremos movernos en
espacios de memoria.
A un puntero no se le puede realizar operaciones aritméticas como la suma, resta,
etc. con otro puntero. Ya que solo nos indica una dirección.

7
Código.
/**
* @file memoria_oct18.c
* @brief Application entry point.
*/
#include <stdio.h>
#include "board.h"
#include "pin_mux.h"
#include "clock_config.h"
#include "MKL25Z4.h"

/* TODO: insert other include files here. */

/* TODO: insert other definitions and declarations here. */

/*
* @brief Application entry point.
*/
int main(void) {

/* Init board hardware. */


BOARD_InitBootPins();
BOARD_InitBootClocks();
/* Init FSL debug console. */
BOARD_InitDebugConsole();

printf("Hello World\n");

uint8_t *p;
p=0x1FFFF0F0;
*p=0x00;
*(p+1)= 0x01;
*(p+2)= 0x02;
*(p+3)= 0x03;
*(p+4)= 0x04;
*(p+5)= 0x05;
*(p+6)= 0x06;
*(p+7)= 0x07;
*(p+8)= 0x08;
*(p+9)= 0x09;

/* Force the counter to be placed into memory. */


volatile static int i = 0 ;
/* Enter an infinite loop, just incrementing a counter. */
while(1) {
i++ ;
}
return 0 ;
}