TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TIJUANA
INGENIERÍA INDUSTRIAL
Algoritmos y lenguaje de programación
Unidad III
Ago-Dic
Tarea I
Docente:
Casas Frausto Alma Graciela
Alumno:
Rodríguez Quezada Alexa Valeria
07 de Octubre 2024
3.5 Almacenamiento, direccionamiento y representación en memoria.
Almacenamiento
Se denomina almacenamiento al proceso y la consecuencia de almacenar.
Esta acción se vincula a recoger, depositar, archivar o registrar a partir del desarrollo
de la informática, el almacenamiento no solo se relaciona con objetos físicos, sino
también con materiales virtuales (digitales).
En el terreno de la computación, la idea de almacenamiento se refiere a
archivar los documentos. El almacenamiento implica copiar la información en algún
tipo de soporte: un disco rígido (disco duro), un DVD, un sitio web, etc. Así, un
usuario puede almacenar documentos de oficina en el disco rígido de su
computadora (ordenador), guardar sus fotos familiares en una plataforma online y
copiar sus canciones preferidas en un DVD.
En la actualidad, uno de los dispositivos de almacenamiento, a nivel
informático, más utilizado es el pendrive. En el mismo podemos guardar una gran
variedad de documentos, fotografías o archivos y, además, llevarlos consigo. Sí,
porque ese artículo tiene un tamaño muy pequeño que facilita el llevarlo en el bolso,
el maletín e incluso el bolsillo.Hoy en día existe lo que se conoce como
almacenamiento en la nube, que consiste en guardar todo tipo de documentos en
espacios virtuales a los que se puede acceder en cualquier momento.
Direccionamiento
Los modos de direccionamiento son un aspecto de la arquitectura del
conjunto de instrucciones en la mayoría de los diseños de unidades centrales de
procesamiento (CPU). Los diversos modos de direccionamiento que se definen en
una arquitectura de conjunto de instrucciones determinada definen cómo las
instrucciones en lenguaje de máquina en esa arquitectura identifican los operandos
1
de cada instrucción. Un modo de direccionamiento especifica cómo calcular la
dirección de memoria efectiva de un operando utilizando información contenida en
registros y/o constantes contenidas dentro de una instrucción de máquina o en otro
lugar.
En programación de computadoras, los modos de direccionamiento son de
interés principalmente para quienes escriben en lenguajes ensambladores y para
escritores de compiladores. Para conocer un concepto relacionado, consulte el
conjunto de instrucciones ortogonales que trata de la capacidad de cualquier
instrucción para utilizar cualquier modo de direccionamiento.
El término "modo de direccionamiento" está sujeto a diferentes
interpretaciones: ya sea "modo de cálculo de dirección de memoria" o "modo de
acceso a operando". Según la primera interpretación, se considera que las
instrucciones que no leen de la memoria ni escriben en la memoria (como "agregar
literal al registro") no tienen un "modo de direccionamiento". La segunda
interpretación permite máquinas como VAX que utilizan bits de modo operando para
permitir un registro o un operando literal. Sólo la primera interpretación se aplica a
instrucciones cómo "cargar dirección efectiva", que carga la dirección del operando,
no el operando en sí.
Como sabemos direccionamiento se refiere a cómo se accede a los datos
en la memoria u otras estructuras de datos. Existen varios tipos de
direccionamiento, cada uno con su forma particular de especificar la localización de
los datos. A continuación te explico los tipos más comunes:
1. Direccionamiento Inmediato
● El operando es un valor constante que se encuentra en la instrucción.
● Ejemplo: Si la instrucción es MOV AX, 5, aquí el valor 5 es el operando
inmediato que se asigna directamente al registro AX.
2. Direccionamiento Directo
2
● La instrucción contiene la dirección de memoria donde se encuentran los
datos.
● Ejemplo: Si la instrucción es MOV AX, [1000], significa que el dato está en la
dirección de memoria 1000, y ese valor se copia en el registro AX.
3. Direccionamiento Indirecto
● La instrucción hace referencia a un registro o una posición de memoria que
contiene la dirección real de los datos.
● Ejemplo: Si la instrucción es MOV AX, [BX], el registro BX contiene una
dirección de memoria, y el contenido de esa dirección se mueve a AX.
4. Direccionamiento por Registro
● El operando es un registro, y la instrucción actúa directamente sobre el
contenido de dicho registro.
● Ejemplo: MOV AX, BX copia el valor de BX en el registro AX.
5. Direccionamiento Indexado
● Se utiliza un registro base más un valor de desplazamiento para calcular la
dirección efectiva.
● Ejemplo: MOV AX, [BX + SI], donde BX es el registro base y SI es un registro
de índice. El contenido de la dirección resultante de sumar ambos se carga
en AX.
6. Direccionamiento Relativo
● Se utiliza un valor de desplazamiento respecto a la posición actual de la
instrucción.
● Ejemplo: Instrucciones como JMP o CALL usan direccionamiento relativo
para saltar a otra dirección añadiendo un valor de desplazamiento a la
posición actual.
3
7. Direccionamiento Implícito
● No se especifica el operando porque está implícito en la instrucción misma.
● Ejemplo: La instrucción INC (incrementar) puede implicar que se opere sobre
un registro específico sin necesidad de mencionarlo, como AX.
8. Direccionamiento por Segmento
● Se usan segmentos para particionar la memoria y acceder a direcciones
relativas dentro de estos segmentos.
● Ejemplo: MOV AX, [DS:SI], donde DS es el segmento de datos y SI es el
registro de desplazamiento dentro del segmento.
Cada uno de estos tipos de direccionamiento tiene diferentes aplicaciones
según el contexto de la programación o la arquitectura de la CPU, y son
fundamentales para la manipulación eficiente de datos y la ejecución de programas.
Representación en memoria
La representación en memoria en programación se refiere a cómo se
organizan y almacenan los datos en la memoria de la computadora (ya sea en RAM
u otro tipo de almacenamiento volátil). Todo tipo de dato que se utiliza en un
programa, como números, caracteres, objetos o estructuras de datos, debe ser
representado de alguna manera en memoria.
Aspectos Clave de la Representación en Memoria
1. Direcciones de Memoria
○ La memoria de un ordenador está dividida en celdas o bloques, cada
una con una dirección única (generalmente representada como un
número hexadecimal). Cada dirección de memoria puede almacenar
una cantidad fija de datos, como 1 byte.
○ Los pointers (o punteros) son un tipo de variable que almacena la
dirección de memoria donde se encuentra algún dato.
4
2. Representación Binaria
○ Los datos en la memoria están representados en formato binario (0s y
1s). Todo tipo de dato debe traducirse a este formato binario.
○ Un byte (unidad mínima en la mayoría de los sistemas modernos) está
compuesto de 8 bits (cada bit es un 0 o 1).
Tipos de Datos y su Representación en Memoria
1. Enteros
○ Un número entero (por ejemplo, int en lenguajes como C o Java) se
representa en memoria mediante una cantidad fija de bits
(comúnmente 32 o 64 bits).
○ Se usa la representación en complemento a dos para manejar enteros
con signo (positivos y negativos).
○ Por ejemplo, un entero de 32 bits puede almacenar valores desde
-2,147,483,648 hasta 2,147,483,647.
2. Punto Flotante (números decimales)
○ Los números en punto flotante (como float o double) siguen el
estándar IEEE 754, que divide la representación en tres partes: el
signo, el exponente y la mantisa. Esto permite representar una amplia
gama de números decimales en un formato de tamaño fijo (32 bits
para float, 64 bits para double).
3. Caracteres y Cadenas de Texto
○ Un carácter (por ejemplo, char en C) se almacena como un número
entero, usando una tabla de codificación como ASCII o Unicode para
mapear cada carácter a su representación numérica. En ASCII, por
ejemplo, el carácter 'A' está representado por el número 65.
○ Una cadena de texto (como "hola") es una secuencia de caracteres
almacenados consecutivamente en memoria. En muchos lenguajes,
5
las cadenas terminan con un carácter nulo (\0) para indicar el final de
la cadena.
4. Estructuras de Datos Compuestas
○ Los arreglos (o vectores) son colecciones de elementos del mismo tipo
almacenados en posiciones contiguas en memoria. Por ejemplo, un
arreglo de enteros se representaría como una secuencia de números
enteros almacenados uno tras otro.
○ Las estructuras (como struct en C) son colecciones de varios tipos de
datos agrupados en una sola entidad. Cada campo de la estructura
ocupa una posición de memoria específica, y el compilador se encarga
de alinear estos campos de acuerdo con reglas de alineación.
5. Objetos
○ Los objetos en lenguajes orientados a objetos (como Java, Python,
C++) son instancias de clases que contienen variables (atributos) y
métodos (funciones). En memoria, un objeto contiene los datos de sus
atributos, y la referencia (puntero) a sus métodos puede estar
almacenada en una tabla de métodos (vtable).
○ Los objetos suelen estar almacenados en el heap, mientras que las
referencias a ellos pueden almacenarse en el stack.
La representación en memoria en programación es fundamental para entender
cómo los datos se gestionan, acceden y manipulan en un programa. Diferentes tipos
de datos y estructuras tienen distintas formas de representarse en la memoria, y
esta representación afecta el rendimiento, la eficiencia y el comportamiento de los
programas.