Las Memorias de Las Microcomputadoras

27
Las memorias de las microcomputadoras, son un ejemplo de la aplicación de los dispositivos de almacenamientos de datos llamados memorias. El sistema de los MC esta compuesto por dispositivos de entradas como son los teclados, escáneres, etc. ; y dispositivos de salida como son el monitor y la impresora. La unidad central de procesamiento CPU controla la operación de la MC y procesa los datos. La memoria interna de una MC esta constituida por tres tipos de memoria semiconductoras. La memoria no volátil es llamada ROM ( memoria de solo lectura ) y la memoria volátil es llamada RAM ( memoria de acceso aleatorio ) . Los dispositivos de almacenamiento RAM y ROM vienen en forma de CI y están moteados en tarjetas de circuitos impresos. La mayoría de los datos son almacenados normalmente en dispositivos magnéticos de almacenamiento masivos, denominado disco flexible o disco duro . RANDOM ACCESS MEMORY ( RAM ) La memoria RAM es una memoria volátil muy utilizadas en los MC para almacenar los datos temporalmente, y tiene características de volátil debido a que pierde los datos almacenados en ella cuando se desconecta de la alimentación. La RAM se denomina memoria de lectoescritura. La operación de ubicar un dato y visualizarlo se denomina lectura. Almacenar los datos se denomina escritura. Figura 2: Memorias RAM

Transcript of Las Memorias de Las Microcomputadoras

Page 1: Las Memorias de Las Microcomputadoras

Las memorias de las microcomputadoras, son un ejemplo de la aplicación de los dispositivos de

almacenamientos de datos llamados memorias.

El sistema de los MC esta compuesto por dispositivos de entradas como son los teclados, escáneres, etc.

; y dispositivos de salida como son el monitor y la impresora. La unidad central de procesamiento CPU

controla la operación de la MC y procesa los datos. La memoria interna de una MC esta constituida por

tres tipos de memoria semiconductoras. La memoria no volátil es llamada ROM ( memoria de solo

lectura ) y la memoria volátil es llamada RAM ( memoria de acceso aleatorio ) .

Los dispositivos de almacenamiento RAM y ROM vienen en forma de CI y están moteados en tarjetas de

circuitos impresos.

La mayoría de los datos son almacenados normalmente en dispositivos magnéticos de almacenamiento

masivos, denominado disco flexible o disco duro .

RANDOM ACCESS MEMORY ( RAM )

La memoria RAM es una memoria volátil muy utilizadas en los MC para almacenar los datos

temporalmente, y tiene características de volátil debido a que pierde los datos almacenados en ella

cuando se desconecta de la alimentación. La RAM se denomina memoria de lectoescritura. La operación

de ubicar un dato y visualizarlo se denomina lectura. Almacenar los datos se denomina escritura.

Figura 2: Memorias RAM

La siguiente tabla es una representación gráfica del interior de una memoria de 32 bits. Las 32 casilla

están organizadas en ocho grupos de cuatro bits y cada grupo de cuatro bits es una palabra.

 

Page 2: Las Memorias de Las Microcomputadoras

Dirección Bit D Bit C Bit B Bit A Dirección Bit D Bit C Bit B Bit A

Palabra 0 Palabra 4

Palabra 1 Palabra 5 1 1 E 1

Palabra 2 Palabra 6

Palabra 3 Palabra 7

Tabla 1: Representación de una memoria RAM de 8X4

 

Consideremos la memoria de figura como una RAM si la RAM estuviese en el modo de escribir, el dato

( por ejemplo, 11 E 1 ) puede grabarse en la memoria en posición 5 si la RAM estuviese en el modo de

leer , el dato puede ser leído en la posición indicada, la RAM también es llamada SCRATCH - PAD , esta

memoria es llamada de acceso aleatorio debido a que puedes saltar de una palabra a otra en un solo

paso.

La siguiente figura muestra el diagrama lógico de un sencillo CI RAM 74F189 TTL de 64 bits, este CI RAM

esta construido con tecnología Schottky TTL más moderna, FAST, una subfamilia que muestra una

combinación de rendimiento y eficiencia no alcanzada por otras familias TTL.

 

Figura 3: Diagrama lógico del CI 74F189

 

Uno de los modos de operación del 74F189 es el modo de escritura. Durante esta operación los 4 bits

ubicados en la entrada de datos ( D3 , D2 , D1 , D0 ) se escriben en la posición de la memoria

especificada por las entradas de dirección. Por ejemplo, para escribir 11 E 1 en la posición de la palabra 5

las entradas de datos deben ser D3 = 1, D = E y D0 = 1 y las entradas de dirección deben ser A3 = E , A2

= 1 , A1 = AE = 1. Igualmente la entrada de habilitación de escritura WE debe estar en un nivel bajo y la

entrada de selección de pastilla CS debe estar en BAJO.

Otro modo de operación es el modo de lectura para la RAM 74F189. Las entradas de control C5 deben

estar en un nivel BAJO y WE en ALTO.

A continuación el contenido de la posición direccionada aparecerá en la salida de datos ( O3, O2,

O ,Oo ) . debe entenderse que la operación de lectura uno destruye el dato almacenado , sino que saca

una copia invertida de ese dato.

También encontramos el modo de almacenamiento , ( store ) o de inhibición.

Page 3: Las Memorias de Las Microcomputadoras

Existiendo tipos de RAM básicos , el estático y el dinámico. Un ejemplo de RAM estático es la CI 74F189

esta RAM estática pueden fabricarse utilizando tecnología bipolar o MOS. La RAM estática utiliza un flip-

flop, celda de memoria, y conserva la información siempre que la alimentación este conectada al

integrado.

La RAM dinámica o DRAM son utilizados como unidades de gran capacidad de memoria, una celda de

RAM dinámica esta basada en un dispositivo MOS que al almacenar un carga como lo haría un capacitor.

Un inconveniente es que todas las celdas deben ser recargadas cada pocos milisegundos para que no

pierda los datos.

Los sistemas basados en microprocesador como las microcomputadoras, convenientemente adecuadas

almacena y transfiere los datos en grupos de ocho bits llamadas bits.

Una SRAM muy popular es la 2114 fabricada con tecnología MOS almacena 4.096 bits organizados en

1.024 palabras de 24 bits cada una.

Con la conexión de dos RAM 2114 pueden conformar una memoria de 1.024 palabras de ocho bits por

palabra, a esto se le domina 1 KB de memoria.

Comúnmente las RAM son valoradas mencionando algunas características distintivas como son:

* Tamaño ( en bits ) y organización ( palabra x bits por palabra ; por ejemplo ; la RAM 2114 seria de 4096

bits, o 1024 x 4

* Tecnología utilizadas para la fabricación del clip por ejemplo; NMOS para la RAAM 2114

* Tipo de salida ; esta ser ambas RAM para 2114, o como en otras que tienen salida de 3 estados

* Velocidad ( tiempo de acceso de la memoria ) para la RAM 2114 es de unos 50 a 450ns

* Tipo de memoria ( SRAM ó DRAM )

Page 4: Las Memorias de Las Microcomputadoras
Page 5: Las Memorias de Las Microcomputadoras
Page 6: Las Memorias de Las Microcomputadoras
Page 7: Las Memorias de Las Microcomputadoras
Page 8: Las Memorias de Las Microcomputadoras
Page 9: Las Memorias de Las Microcomputadoras
Page 10: Las Memorias de Las Microcomputadoras
Page 11: Las Memorias de Las Microcomputadoras
Page 12: Las Memorias de Las Microcomputadoras
Page 13: Las Memorias de Las Microcomputadoras
Page 14: Las Memorias de Las Microcomputadoras
Page 15: Las Memorias de Las Microcomputadoras
Page 17: Las Memorias de Las Microcomputadoras

Lectura

Escritura

La celda de memoria es la unidad básica de cualquier memoria, capaz de almacenar un Bit en los

sistemas digitales. La construcción de la celda define el funcionamiento de la misma, en el caso de la

DRAM moderna, consiste en un transistor de efecto de campo y un condensador. El principio de

funcionamiento básico, es sencillo: una carga se almacena en el condensador significando un 1 y sin

carga un 0. El transistor funciona como un interruptor que conecta y desconecta al condensador. Este

mecanismo puede implementarse con dispositivos discretos y de hecho muchas memorias anteriores a la

época de los semiconductores, se basaban en arreglos de celdas transistor-condensador.

Las celdas en cualquier sistema de memoria, se organizan en la forma de matrices de dos dimensiones, a

las cuales se accede por medio de las filas y las columnas. En la DRAM estas estructuras contienen

millones de celdas y se fabrican sobre la superficie de la pastilla de silicio formando áreas que son visibles

a simple vista. En el ejemplo tenemos un arreglo de 4x4 celdas, en el cual las líneas horizontales

conectadas a las compuertas de los transistores son las llamadas filas y las líneas verticales conectadas

a los canales de los FET son las columnas.

Para acceder a una posición de memoria se necesita una dirección de 4 bits, pero en las DRAM las

direcciones están multiplexadas en tiempo, es decir se envían por mitades. Las entradas marcadas como

a0 y a1 son el bus de direcciones y por el mismo entra la dirección de la fila y después la de la columna.

Las direcciones se diferencian por medio de señales de sincronización llamadas RAS (del inglés Row

Address Strobe) y CAS (Column Address Strobe) que indican la entrada de cada parte de la dirección.

Los pasos principales para una lectura son:

Las columnas son precargadas a un voltaje igual a la mitad del voltaje de 1 lógico. Esto es posible ya

que las líneas se comportan como grandes condensadores, dada su longitud tienen un valor más alto

que la de los condensadores en las celdas.

Page 18: Las Memorias de Las Microcomputadoras

Una fila es energizada por medio del decodificador de filas que recibe la dirección y la señal de RAS.

Esto hace que los transistores conectados a una fila conduzcan y permitiendo la conexión electrica

entre las líneas de columna y una fila de condensadores. El efecto es el mismo que se produce al

conectar dos condensadores, uno cargado y otro de carga desconocida: se produce un balance de

que deja a los dos con un voltaje muy similar, compartiendo las cargas. El resultado final depende del

valor de carga en el condensador de la celda conectada a cada columna. El cambio es pequeño, ya

que la línea de columna es un condensador más grande que el de la celda.

El cambio es medido y amplificado por una sección que contiene circuitos derealimentación positiva:

si el valor a medir es menor que el la mitad del voltaje de 1 lógico, la salida será un 0, si es mayor, la

salida se regenera a un 1. Funciona como un redondeo.

La lectura se realiza en todas las posiciones de una fila de manera que al llegar la segunda parte de

la dirección, se decide cual es la celda deseada. Esto sucede con la señal CAS. El dato es entregado

al bus de datos por medio de la lineo D.O. y las celdas involucradas en el proceso son reescritas, ya

que la lectura de la DRAM es destructiva.

La escritura en una posición de memoria tiene un proceso similar al de arriba, pero en lugar de leer el

valor, la línea de columna es llevada a un valor indicado por la línea D.I. y el condensador es cargado o

descargado. El flujo del dato es mostrado con una línea gruesa en el gráfico.

Instrucciones básicas 8086             

Este listado no pretende ser un substituto del manual Intel de instrucciones del  8086 -del que fervientemente recomiendo una minuciosa lectura una vez que haya comprendido bien esto- sino la más breve descripción posible para poder avanzar un poco más en los aspectos más básicos que se precisan para comprender el tutorial de lenguaje Assembly de +gthorne. Esta es una lista completa de instrucciones 8086 a las que sólo le faltan las instrucciones ESC, LOCK y WAIT, que no son útiles a nuestros fines inmediatos.

En la siguiente tabla se muestran encolumnados los Mnemónicos (como MOV), los operandos (como fuente, destino) y la descripción de la operación. Los operandos son combinaciones entre tipos (registro, memoria e inmediato) con los direccionamientos admitidos en cada instrucción. Las instrucciones IN y OUT admiten un cuarto tipo de operando: puertos de I/O, con direccionamiento registro o inmediato.

Instrucciones de movimientos de datos

Page 19: Las Memorias de Las Microcomputadoras

MOV destino,fuente ;la única instrucción que utiliza todos los tipos de direccionamiento

XCHG destino,fuente ;Intercambia los contenidos de destino y fuente

XLAT tabla_fuente ;carga el registro AL con el byte direccionado por (BX+AL)

LAHF   ;carga las flags S, Z, A, P y C en AH 

SAHF ;guarda AH en el registro de flags

LDS destino,fuente ;transfiere un puntero de 32 bits al registro DS y al registro destino

LES destino,fuente ;transfiere un puntero de 32 bits al registro ES y al registro destino

LEA destino,fuente ;transfiere el offset de fuente (una dirección) a destino (un registro)

PUSH fuente ;guarda fuente en el stack (en la dirección SS:SP)

POP destino ;recupera del stack (dirección SS:SP-1) y guarda en registro destino

PUSHF   ;almacena  el registro de flags en/desde el stack

POPF ;recupera el registro de flags en/desde el stack

PUSHA   ; almacena los reg DI,SI,BP,SP,BX,DX,CX,AX en/desde el stack

POPA ;recupera los reg DI,SI,BP,SP,BX,DX,CX,AX en/desde el stack

IN origen ;carga desde un puerto origen un byte o word en AL o AX

OUT destino ;escribe Al o AX en el puerto destino (direccionam. inmediato o DX)

 Las operaciones aritméticas

ADD destino,fuente ;suma fuente + destino y guarda el resultado en destino

ADC destino,fuente ;suma fuente + destino + Carry y guarda el resultado en destino

SUB destino,fuente ;resta destino - fuente y guarda el resultado en destino

SUB destino,fuente ;resta destino - fuente - Carry y guarda el resultado en destino

MUL fuente ;multiplica AL o AX * fuente y guarda el resultado en DX:AX

IMUL fuente ;igual que la anterior pero con numeros enteros con signo

DIV fuente ;divide DX:AX / fuente y guarda cociente en AX y resto en DX

IDIV fuente ;igual que la anterior pero con numeros enteros con signo

AND destino,fuente ;opera destino AND fuente y guarda resultado en destino

OR destino,fuente ;opera destino OR fuente y guarda el resultado en destino

XOR destino,fuente ;opera destino XOR fuente y guarda el resultado en destino

NOT destino ;el NOT cambia todos los 1 en 0 y los 0 en 1 de destino.

NEG destino ;NEG realiza el complemento a 2 de destino

INC destino ;Incremente an 1 el contenido de destino

DEC destino ;Decrementa en 1 el contenido de destino

DAA / DAS   ;Efectúa el ajuste decimal en suma / resta del registro AL

AAA/AAD/ AAM/AAS

  ;ajustan el registro AL a valor decimal desempaquetado (para aplicar en operaciones suma, resta, multiplicación y división)

Instrucciones de rotación

Page 20: Las Memorias de Las Microcomputadoras

RCL destino,contador ;rota destino a traves de carry a la izquierda contador veces

RCR destino,contador ;rota destino a traves de carry a la derecha contador veces

ROL destino,contador ;rota destino a la izquierda contador veces

ROR destino,contador ;rota destino a la derecha contador veces

SAL destino,contador ;desplaza destino a la izquierda contador veces y rellena con ceros

SAR destino,contador ;desplaza destino a la derecha contador veces y rellena con bit SF

SHR destino,contador ;desplaza destino a la derecha contador veces y rellena con ceros

 

NOTAS SOBRE INSTRUCCIONES DE ROTACIÓN

Page 21: Las Memorias de Las Microcomputadoras

El bit SF (signo) es el que está más a la izquierda : si destino es operando es de 8 bits "SF" es el bit número 7 y si destino es un operando de 16 bits, es el bit número 15

En el procesador 8086 se permite un dato inmediato en lugar de especificar un registro como contador solo si ese dato inmediato es 1. Por lo tanto, para uno de esos procesadores la instrucción RCL AX,1 es válida mientras que la RCL AX,5 no lo es. A partir de 80286 se puede especificar cualquier numero de rotaciones como dato inmediato. Como DEBUG presupone 8086, cualquier valor inmediato distinto de 1 da error.

Si en un programa para 8086 se desean rotar más de un bit a la vez, el valor contador se carga en CL

Para rotar un nibble (lo que es muy común en la conversión de binario a BCD) es más rápido y ocupa menos memoria si se utilizan 4 rotaciones de contador igual a 1 que si se utiliza el registro CL

Las instrucciones SAL y SHL son equivalentes  La flag de Overflow cambia con una logica precisa si la rotación es de una posición. En

caso de rotaciones mayores, OVF queda indefinida. En los procesadores 80286 en adelante la rotación se hace MODULO 32, es decir que se

rotará la cantidad de veces igual al resto de la división contador/32, o sea que ROL AX,33 equivale a ROL AX,1 o ROL AX,65.

Una rotación con CL=0 equivale a un NOP de dos bytes

 

Instrucciones de comparación

CMP  destino,fuente ;compara fuente y destino. Modifica las flags V, Z, S, C, P y AC

TEST destino,fuente ;AND entre fuente y destino . Ninguno de los operandos cambia.

TEST modifica las mismas flags que CMP pero siempre deja a V = 0 y C = 0.

Instrucciones de strings

CMPS string_destino,string_fuente ;compara las dos cadenas de a bytes o words

CMPSB string_destino,string_fuente ;origen y destino indicados por DS:SI y ES:DI  (bytes)

CMPSW string_destino,string_fuente ;origen y destino indicados por DS:SI y ES:DI  (words)

LODS string_fuente ;mueve un byte o una word desde fuente a AL o AX

LODSB string_fuente ;origen  indicado por DS:SI (mueve un byte a AL)

LODSW string_fuente ;origen  indicado por DS:SI (mueve una word a AX)

STOS string_destino ;mueve un byte o una word al destino desde AL o AX

STOSB string_destino   ;destino indicado por ES:DI (mueve AL a un byte)

STOSW string_destino   ;destino indicado por ES:DI  (mueve AX a una word)

MOVS string_destino,string_fuente ;mueve un byte o word de fuente a destino

MOVSB string_destino,string_fuente ;origen y destino indicados por DS:SI y ES:DI (un byte)

MOVSW string_destino,string_fuente ;origen y destino indicados por DS:SI y ES:DI (una word)

SCAS string_destino ;compara la cadena de destino con AL o AX

Page 22: Las Memorias de Las Microcomputadoras

SCASB string_destino ;destino indicado por ES:DI (compara AL con un byte)

SCASW string_destino ;destino indicado por ES:DI (compara AX con una word)

En todos los casos, si se utiliza el prefijo REP, la cantidad de elementos de la cadena a operar está dada por el contenido del registro CX, si no es un solo elemento de la cadena. A cada operación, CX es decrementado y SI y DI son incrementados o decrementados de acuerdo con el estado de la flag de dirección (Si D=0, se incrementan). El incremento o decremento de estos registros se hace de a uno si son operaciones de bytes o de a dos si son de a words. Para los casos en que se especifica el largo del operando con la B o W final, la string_destino está apuntada por ES:DI, la string_fuente está apuntada por DS:SI .

Instrucciones de repetición

LOOP offset ;decrementa CX. Si CX no es cero, salta a offset (IP = IP + offset)

LOOPZ offset ;decrementa CX, Si CX <> 0 y Z = 1 , salta a offset (IP = IP + offset)

LOOPNZ offset ;decrementa CX, Si CX <> 0 y Z = 0 , salta a offset (IP = IP + offset)

En todos los casos, si no se produce el salto, se ejecuta la próxima instrucción

REP instrucción ;decrementa CX y repite la siguiente instrucción MOVS o STOS hasta que CX=0

REPZ instrucción ;igual que REP, pero para CMPS y SCAS. Repite si la flag Z queda en 1 (igualdad)

REPNZ instrucción ;igual queREPZ, pero repite si la flag Z queda en 0 (las cadenas son distintas)

Instrucciones de salto

CALL destino ;llama a procedimiento. IP <-- offset de destino y CS <-- segmento de destino

RET valor ;retorna desde un procedimiento (el inverso de CALL), valor es opcional

INT número ;llamado a interrupción. CS:IP <-- vector de INT.Las flags se guardan en el stack

INTO   ;llama a la INT 4 si la flag de overflow (V) está en 1 cuando se ejecuta la instrucción

IRET   ;retorna de interrupción al programa restaurando flags

JMP dirección ;Salta incondicionalmente al lugar indicado por dirección

JA offset ;salta a IP + offset si las flags C=0 Y Z=0 (salta si primer operando es mayor)

JAE offset ;salta a IP + offset si la flag C=0 (salta si primer operando es mayor o igual)

JB offset ;salta a IP + offset si las flags C=1 (salta si primer operando es menor)(igual a JC)

JBE offset ;salta a IP + offset si las flags C=1 o Z=1 (salta si primer operando es menor o igual)

JZ offset ;salta a IP + offset si las flags Z=1 (salta si primer operando es igual al segundo)(=JE)

JG offset ;salta a IP + offset si las flags S=V Y Z=0 (salta si primer operando es mayor)

JGE offset ;salta a IP + offset si las flags S=V (salta si primer operando es mayor o igual)

JL offset ;salta a IP + offset si las flags S<>V (salta si primer operando es menor)

JLE offset ;salta a IP + offset si las flags S<>V o Z=1(salta si primer operando es menor o

Page 23: Las Memorias de Las Microcomputadoras

igual)

JNC offset ;salta a IP + offset si la flag C=0 (salta si no hay carry)

JNZ offset ;salta a IP + offset si la flag Z=0 (salta si no son iguales o no es cero)

JNO offset ;salta a IP + offset si la flag V=0 (salta si no hay overflow)

JNP offset ;salta a IP + offset si la flag P=0 (salta si no hay paridad -o la paridad es impar =JPO)

JNS offset ;salta a IP + offset si la flag S=0 (salta si no hay hay bit de signo)

JO offset ;salta a IP + offset si la flag V=1 (salta si hay desbordamiento -overflow)

JP offset ;salta a IP + offset si la flag P=1 (salta si la paridad es par ) (=JPE)

JS offset ;salta a IP + offset si la flag S=1 (salta si el signo es negativo)

JCXZ offset ;salta a IP + offset si la flag CX=0 (salta si el registro CX es cero)

Las instrucciones de saltos por Above o Below se refieren entre dos valores sin signo (JA, JAE, JB y JBE), mientras que las Greater y Less se refieren a la relación entre dos valores con signo (JG, JGE, JL y JLE). .

Instrucciones que afectan flags

CLC/CMC/STC

;pone a cero / complementa / pone en 1 la flag C (carry)

CLD/STD ;pone a cero / uno la flag de dirección (D=0 hace que SI y DI se incrementen)

CLI/STI ;deshabilita / habilita las interrupciones por hardware enmascarables

Instrucciones misceláneas

NOP ;no-operación: el procesador pasa a la instrucción siguiente sin hacer nada

CBW ;convierte el byte de AL en palabra (AX), copiando el bit 7 a todo el registro AH

CWD ;convierte word en double-word, copiando bit 15 de AX a todo el registro DX

HLT ;el procesador se detiene hasta que llegue un Reset o una interrupción por hard.

Alguien puede preguntarse para qué puede servir una instrucción que no hace absolutamente nada como la NOP. Simplemente para llenar espacio, y es realmente una de las instrucciones más útiles para un cracker, a punto tal que algunos mecanismos anticracking sofisticados buscan durante la ejecución de un programa si alguien lo arregló sustituyendo algunas instrucciones por NOPs, y en caso de detectarlo, abortan la ejecución. Pero esto es tema para más adelante.

Bibliografias

http://www.ladelec.com/teoria/electronica-digital/210-memorias-la-memoria-ram

Principios y Aplicaciones Digitales

Page 24: Las Memorias de Las Microcomputadoras

http://www.monografias.com/trabajos3/tiposram/tiposram.shtml

http://galia.fc.uaslp.mx/~cantocar/microprocesadores/EL_Z80_PDF_S/13_TIPOS_DE_MEMORIA.PDF