Sei sulla pagina 1di 24

Las memorias de las microcomputadoras, son un ejemplo de la aplicacin de los dispositivos de almacenamientos de datos llamados memorias.

El sistema de los MC esta compuesto por dispositivos de entradas como son los teclados, escneres, etc. ; y dispositivos de salida como son el monitor y la impresora. La unidad central de procesamiento CPU controla la operacin de la MC y procesa los datos. La memoria interna de una MC esta constituida por tres tipos de memoria semiconductoras. La memoria no voltil es llamada ROM ( memoria de solo lectura ) y la memoria voltil es llamada RAM ( memoria de acceso aleatorio ) . Los dispositivos de almacenamiento RAM y ROM vienen en forma de CI y estn moteados en tarjetas de circuitos impresos. La mayora de los datos son almacenados normalmente en dispositivos magnticos de almacenamiento masivos, denominado disco flexible o disco duro .

RANDOM ACCESS MEMORY ( RAM )


La memoria RAM es una memoria voltil muy utilizadas en los MC para almacenar los datos temporalmente, y tiene caractersticas de voltil debido a que pierde los datos almacenados en ella cuando se desconecta de la alimentacin. La RAM se denomina memoria de lectoescritura. La operacin de ubicar un dato y visualizarlo se denomina lectura. Almacenar los datos se denomina escritura.

Figura 2: Memorias RAM


La siguiente tabla es una representacin grfica del interior de una memoria de 32 bits. Las 32 casilla estn organizadas en ocho grupos de cuatro bits y cada grupo de cuatro bits es una palabra.

Direccin

Bit D Bit C Bit B Bit A Direccin Bit D Bit C Bit B Bit A

Palabra 0 Palabra 1 Palabra 2 Palabra 3

Palabra 4 Palabra 5 Palabra 6 Palabra 7 Tabla 1: Representacin de una memoria RAM de 8X4 1 1 E 1

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 posicin 5 si la RAM estuviese en el modo de leer , el dato puede ser ledo en la posicin indicada, la RAM tambin 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 lgico de un sencillo CI RAM 74F189 TTL de 64 bits, este CI RAM esta construido con tecnologa Schottky TTL ms moderna, FAST, una subfamilia que muestra una combinacin de rendimiento y eficiencia no alcanzada por otras familias TTL.

Figura 3: Diagrama lgico del CI 74F189

Uno de los modos de operacin del 74F189 es el modo de escritura. Durante esta operacin los 4 bits ubicados en la entrada de datos ( D3 , D2 , D1 , D0 ) se escriben en la posicin de la memoria especificada por las entradas de direccin. Por ejemplo, para escribir 11 E 1 en la posicin de la palabra 5 las entradas de datos deben ser D3 = 1, D = E y D0 = 1 y las entradas de direccin deben ser A3 = E , A2 = 1 , A1 = AE = 1. Igualmente la entrada de habilitacin de escritura WE debe estar en un nivel bajo y la entrada de seleccin de pastilla CS debe estar en BAJO. Otro modo de operacin 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 continuacin el contenido de la posicin direccionada aparecer en la salida de datos ( O3, O2, O ,Oo ) . debe entenderse que la operacin de lectura uno destruye el dato almacenado , sino que saca una copia invertida de ese dato. Tambin encontramos el modo de almacenamiento , ( store ) o de inhibicin.

Existiendo tipos de RAM bsicos , el esttico y el dinmico. Un ejemplo de RAM esttico es la CI 74F189 esta RAM esttica pueden fabricarse utilizando tecnologa bipolar o MOS. La RAM esttica utiliza un flipflop, celda de memoria, y conserva la informacin siempre que la alimentacin este conectada al integrado. La RAM dinmica o DRAM son utilizados como unidades de gran capacidad de memoria, una celda de RAM dinmica esta basada en un dispositivo MOS que al almacenar un carga como lo hara 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 tecnologa MOS almacena 4.096 bits organizados en 1.024 palabras de 24 bits cada una. Con la conexin 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. Comnmente las RAM son valoradas mencionando algunas caractersticas distintivas como son: * Tamao ( en bits ) y organizacin ( palabra x bits por palabra ; por ejemplo ; la RAM 2114 seria de 4096 bits, o 1024 x 4 * Tecnologa utilizadas para la fabricacin 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 )

Funcionamiento

Lectura

Escritura

La celda de memoria es la unidad bsica de cualquier memoria, capaz de almacenar un Bit en los sistemas digitales. La construccin 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 bsico, 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 lneas horizontales conectadas a las compuertas de los transistores son las llamadas filas y las lneas verticales conectadas a los canales de los FET son las columnas. Para acceder a una posicin de memoria se necesita una direccin de 4 bits, pero en las DRAM las direcciones estn multiplexadas en tiempo, es decir se envan por mitades. Las entradas marcadas como a0 y a1 son el bus de direcciones y por el mismo entra la direccin de la fila y despus la de la columna. Las direcciones se diferencian por medio de seales de sincronizacin llamadas RAS (del ingls Row Address Strobe) y CAS (Column Address Strobe) que indican la entrada de cada parte de la direccin. Los pasos principales para una lectura son:

Las columnas son precargadas a un voltaje igual a la mitad del voltaje de 1 lgico. Esto es posible ya que las lneas se comportan como grandes condensadores, dada su longitud tienen un valor ms alto que la de los condensadores en las celdas.

Una fila es energizada por medio del decodificador de filas que recibe la direccin y la seal de RAS. Esto hace que los transistores conectados a una fila conduzcan y permitiendo la conexin electrica entre las lneas 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 pequeo, ya que la lnea de columna es un condensador ms grande que el de la celda. El cambio es medido y amplificado por una seccin que contiene circuitos derealimentacin positiva: si el valor a medir es menor que el la mitad del voltaje de 1 lgico, 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 direccin, se decide cual es la celda deseada. Esto sucede con la seal 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 posicin de memoria tiene un proceso similar al de arriba, pero en lugar de leer el valor, la lnea de columna es llevada a un valor indicado por la lnea D.I. y el condensador es cargado o descargado. El flujo del dato es mostrado con una lnea gruesa en el grfico.

Instrucciones bsicas 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 ms breve descripcin posible para poder avanzar un poco ms en los aspectos ms bsicos que se precisan para comprender el tutorial de lenguaje Assembly de +gthorne. Esta es una lista completa de instrucciones 8086 a las que slo le faltan las instrucciones ESC, LOCK y WAIT, que no son tiles a nuestros fines inmediatos. En la siguiente tabla se muestran encolumnados los Mnemnicos (como MOV), los operandos (como fuente, destino) y la descripcin de la operacin. Los operandos son combinaciones entre tipos (registro, memoria e inmediato) con los direccionamientos admitidos en cada instruccin. 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

MOV XCHG XLAT LAHF SAHF LDS LES LEA PUSH POP PUSHF POPF PUSHA POPA IN OUT

destino,fuente ;la nica instruccin que utiliza todos los tipos de direccionamiento destino,fuente ;Intercambia los contenidos de destino y fuente tabla_fuente ;carga el registro AL con el byte direccionado por (BX+AL) ;carga las flags S, Z, A, P y C en AH ;guarda AH en el registro de flags destino,fuente ;transfiere un puntero de 32 bits al registro DS y al registro destino destino,fuente ;transfiere un puntero de 32 bits al registro ES y al registro destino destino,fuente ;transfiere el offset de fuente (una direccin) a destino (un registro) fuente destino ;guarda fuente en el stack (en la direccin SS:SP) ;recupera del stack (direccin SS:SP-1) y guarda en registro destino ;almacena el registro de flags en/desde el stack ;recupera el registro de flags en/desde el stack ; almacena los reg DI,SI,BP,SP,BX,DX,CX,AX en/desde el stack ;recupera los reg DI,SI,BP,SP,BX,DX,CX,AX en/desde el stack origen destino ;carga desde un puerto origen un byte o word en AL o AX ;escribe Al o AX en el puerto destino (direccionam. inmediato o DX)

Las operaciones aritmticas


ADD ADC SUB SUB MUL IMUL DIV IDIV AND OR XOR NOT NEG INC DEC DAA / DAS AAA/AAD/ AAM/AAS destino,fuente destino,fuente destino,fuente destino,fuente fuente fuente fuente fuente destino,fuente destino,fuente destino,fuente destino destino destino destino ;suma fuente + destino y guarda el resultado en destino ;suma fuente + destino + Carry y guarda el resultado en destino ;resta destino - fuente y guarda el resultado en destino ;resta destino - fuente - Carry y guarda el resultado en destino ;multiplica AL o AX * fuente y guarda el resultado en DX:AX ;igual que la anterior pero con numeros enteros con signo ;divide DX:AX / fuente y guarda cociente en AX y resto en DX ;igual que la anterior pero con numeros enteros con signo ;opera destino AND fuente y guarda resultado en destino ;opera destino OR fuente y guarda el resultado en destino ;opera destino XOR fuente y guarda el resultado en destino ;el NOT cambia todos los 1 en 0 y los 0 en 1 de destino. ;NEG realiza el complemento a 2 de destino ;Incremente an 1 el contenido de destino ;Decrementa en 1 el contenido de destino ;Efecta el ajuste decimal en suma / resta del registro AL ;ajustan el registro AL a valor decimal desempaquetado (para aplicar en operaciones suma, resta, multiplicacin y divisin)

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

RCR ROL ROR SAL SAR SHR

destino,contador destino,contador destino,contador destino,contador destino,contador destino,contador

;rota destino a traves de carry a la derecha contador veces ;rota destino a la izquierda contador veces ;rota destino a la derecha contador veces ;desplaza destino a la izquierda contador veces y rellena con ceros ;desplaza destino a la derecha contador veces y rellena con bit SF ;desplaza destino a la derecha contador veces y rellena con ceros

NOTAS SOBRE INSTRUCCIONES DE ROTACIN

El bit SF (signo) es el que est ms a la izquierda : si destino es operando es de 8 bits "SF" es el bit nmero 7 y si destino es un operando de 16 bits, es el bit nmero 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 instruccin RCL AX,1 es vlida 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 ms de un bit a la vez, el valor contador se carga en CL Para rotar un nibble (lo que es muy comn en la conversin de binario a BCD) es ms rpido 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 rotacin es de una posicin. En caso de rotaciones mayores, OVF queda indefinida. En los procesadores 80286 en adelante la rotacin se hace MODULO 32, es decir que se rotar la cantidad de veces igual al resto de la divisin contador/32, o sea que ROL AX,33 equivale a ROL AX,1 o ROL AX,65. Una rotacin con CL=0 equivale a un NOP de dos bytes

Instrucciones de comparacin
CMP TEST destino,fuente destino,fuente ;compara fuente y destino. Modifica las flags V, Z, S, C, P y AC ;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 CMPSB CMPSW LODS LODSB LODSW STOS STOSB STOSW MOVS MOVSB string_destino,string_fuente string_destino,string_fuente string_destino,string_fuente string_fuente string_fuente string_fuente string_destino string_destino string_destino string_destino,string_fuente string_destino,string_fuente ;compara las dos cadenas de a bytes o words ;origen y destino indicados por DS:SI y ES:DI (bytes) ;origen y destino indicados por DS:SI y ES:DI (words) ;mueve un byte o una word desde fuente a AL o AX ;origen indicado por DS:SI (mueve un byte a AL) ;origen indicado por DS:SI (mueve una word a AX) ;mueve un byte o una word al destino desde AL o AX ;destino indicado por ES:DI (mueve AL a un byte) ;destino indicado por ES:DI (mueve AX a una word) ;mueve un byte o word de fuente a destino ;origen y destino indicados por DS:SI y ES:DI (un byte) ;origen y destino indicados por DS:SI y ES:DI (una word) ;compara la cadena de destino con AL o AX

MOVSW string_destino,string_fuente SCAS string_destino

SCASB SCASW

string_destino string_destino

;destino indicado por ES:DI (compara AL con un byte) ;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 operacin, CX es decrementado y SI y DI son incrementados o decrementados de acuerdo con el estado de la flag de direccin (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 repeticin
LOOP LOOPZ offset offset ;decrementa CX. Si CX no es cero, salta a offset (IP = IP + offset) ;decrementa CX, Si CX <> 0 y Z = 1 , salta a offset (IP = IP + offset) ;decrementa CX, Si CX <> 0 y Z = 0 , salta a offset (IP = IP + offset)

LOOPNZ offset

En todos los casos, si no se produce el salto, se ejecuta la prxima instruccin REP REPZ instruccin instruccin ;decrementa CX y repite la siguiente instruccin MOVS o STOS hasta que CX=0 ;igual que REP, pero para CMPS y SCAS. Repite si la flag Z queda en 1 (igualdad) ;igual queREPZ, pero repite si la flag Z queda en 0 (las cadenas son distintas)

REPNZ instruccin

Instrucciones de salto
CALL RET INT INTO IRET JMP JA JAE JB JBE JZ JG JGE JL JLE JNC direccin offset offset offset offset offset offset offset offset offset offset destino valor nmero ;llama a procedimiento. IP <-- offset de destino y CS <-- segmento de destino ;retorna desde un procedimiento (el inverso de CALL), valor es opcional ;llamado a interrupcin. CS:IP <-- vector de INT.Las flags se guardan en el stack ;llama a la INT 4 si la flag de overflow (V) est en 1 cuando se ejecuta la instruccin ;retorna de interrupcin al programa restaurando flags ;Salta incondicionalmente al lugar indicado por direccin ;salta a IP + offset si las flags C=0 Y Z=0 (salta si primer operando es mayor) ;salta a IP + offset si la flag C=0 (salta si primer operando es mayor o igual) ;salta a IP + offset si las flags C=1 (salta si primer operando es menor)(igual a JC) ;salta a IP + offset si las flags C=1 o Z=1 (salta si primer operando es menor o igual) ;salta a IP + offset si las flags Z=1 (salta si primer operando es igual al segundo)(=JE) ;salta a IP + offset si las flags S=V Y Z=0 (salta si primer operando es mayor) ;salta a IP + offset si las flags S=V (salta si primer operando es mayor o igual) ;salta a IP + offset si las flags S<>V (salta si primer operando es menor) ;salta a IP + offset si las flags S<>V o Z=1(salta si primer operando es menor o igual) ;salta a IP + offset si la flag C=0 (salta si no hay carry)

JNZ JNO JNP JNS JO JP JS JCXZ

offset offset offset offset offset offset offset offset

;salta a IP + offset si la flag Z=0 (salta si no son iguales o no es cero) ;salta a IP + offset si la flag V=0 (salta si no hay overflow) ;salta a IP + offset si la flag P=0 (salta si no hay paridad -o la paridad es impar =JPO) ;salta a IP + offset si la flag S=0 (salta si no hay hay bit de signo) ;salta a IP + offset si la flag V=1 (salta si hay desbordamiento -overflow) ;salta a IP + offset si la flag P=1 (salta si la paridad es par ) (=JPE) ;salta a IP + offset si la flag S=1 (salta si el signo es negativo) ;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 relacin 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 CLI/STI ;pone a cero / uno la flag de direccin (D=0 hace que SI y DI se incrementen) ;deshabilita / habilita las interrupciones por hardware enmascarables

Instrucciones miscelneas
NOP CBW CWD HLT ;no-operacin: el procesador pasa a la instruccin siguiente sin hacer nada ;convierte el byte de AL en palabra (AX), copiando el bit 7 a todo el registro AH ;convierte word en double-word, copiando bit 15 de AX a todo el registro DX ;el procesador se detiene hasta que llegue un Reset o una interrupcin por hard.

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

Bibliografias

http://www.ladelec.com/teoria/electronica-digital/210-memorias-la-memoria-ram Principios y Aplicaciones Digitales http://www.monografias.com/trabajos3/tiposram/tiposram.shtml http://galia.fc.uaslp.mx/~cantocar/microprocesadores/EL_Z80_PDF_S/13_TIPOS_DE_MEMORI A.PDF

Potrebbero piacerti anche