You are on page 1of 3

Modos de direccionamiento Se les llama modos de direccionamiento a las distintas formas de combinar los operandos segn el acceso que

se hace a memoria. Dicho de otra manera, un modo de direccionamiento ser una forma de parmetro para las instrucciones. Una instruccin que lleve un parmetro, por lo tanto, usar un modo de direccionamiento, que depender de cmo direccionar (accesar) al parmetro; una instruccin de dos parmetros, combinar dos modos de direccionamiento. Direccionamiento implcito Depende solamente de la instruccin, es decir, la instruccin no lleva parmetros. Particularmente en instrucciones que no accesan memoria, o bien que tienen una forma especfica de accesarla. Ejemplos: PUSHF, POPF, NOP Modo registro Usa solamente registros como operandos Es el ms rpido, pues minimiza los recursos necesarios (toda la informacin fluye dentro del EU del CPU) Ejemplo: MOV AX, BX Modo inmediato Tiene dos operandos: un registro y una constante que se usa por su valor. El valor constante no se tiene que buscar en memoria, pues ya se obtuvo al hacer el fetch de la instruccin. Por tanto, es rpido aunque no tanto como el modo registro; requiere ir al BIU por el dato. Ejemplo: MOV AH, 9 Modo directo Uno de los operandos involucra una localidad especfica de memoria El valor constante se tiene que buscar en memoria, en la localidad especificada. Es ms lento que los anteriores, pero es el ms rpido para ir a memoria, pues ya sabe la localidad, la toma de la instruccin y no la tiene que calcular. Ejemplo: MOV AH, [0000] MOV AH, Variable Estas dos instrucciones seran equivalentes, si Variable est, por ejemplo, en la localidad 0 de memoria. En la forma primitiva del lenguaje de mquina, como el primer ejemplo, se tiene que indicar mover a AH el contenido (indicado por los corchetes), de la localidad 0 de los datos (lo de los datos es implcito). El lenguaje Ensamblador, sin embargo, nos permite la abstraccin del uso de variables, pero como una variable tiene una localidad determinada en memoria, para el procesador funciona igual. La nica diferencia consiste en que el programador no tiene que preocuparse por la direccin, ese manejo lo hace automticamente el Ensamblador. Modo indirecto Se usan los registros SI, DI como apuntadores El operando indica una localidad de memoria, cuya direccin (slo la parte desplazamiento) est en SI o DI. Es ms lento que los anteriores, pues tiene que calcular la localidad Ejemplos: MOV AL, [SI] MOV BL, ES:[SI] ; Aqu se dice que se usa un segment override, donde se indica que en vez de usar el segmento de datos por defecto, se use en su lugar como referencia el segmento extra.

Modo indexado de base Formato: [ BX o BP + SI o DI (opcionales) + constante (opcional) ] BX o BP indica una localidad base de la memoria A partir de BX o BP, se puede tener un desplazamiento variable y uno constante La diferencia es el segmento sobre el que trabajan por defecto: BX por defecto en el segmento de datos BP por defecto en el segmento de pila. Ejemplos: MOV AX, [BX] MOV DX, [BX+2] MOV CX, [BX+DI] MOV DL, [BX+SI+3]

LOS TIPOS DE INSTRUCCIONES: Despus de haber tratado de forma superficial los sistemas de representacin, vamos a ver los distintos tipos de instrucciones que utiliza un microprocesador. Bsicamente puede decirse que el bloque de instrucciones debe ser completo y eficaz de modo que podamos realizar todos los clculos necesarios de forma ms rpida y precisa posible. Una de las principales caractersticas de todo microprocesador es disponer de un buen conjunto de instrucciones que le den la mayor versatilidad posible. Se establecen los siguientes grupos, tipos o conjuntos de instrucciones: 1- ARITMETICAS: Son las instrucciones que realizan operaciones de tipo aritmtico como sumas, restas, incrementos, decrementos, etc. Todas las operaciones de este tipo afectan al registro de estado, es decir a los flags. 2- MOVIMIENTO DE DATOS: Este tipo de instrucciones de movimiento o transferencia de datos, permiten realizar una copia del contenido de un registro o direccin de memoria (origen), en otro registro o direccin de memoria (destino), sin alterar el contenido del origen. 3- INTRUCCIONES LOGICAS: Realizan operaciones lgicas entre los operandos. Afectan a los flags segn sea el caso y las operaciones se realizan bit a bit entre los datos. 4- INSTRUCCIONES DE COMPARACION: Son operaciones de restar o operaciones XOR entre dos operandos. Afectan a los flags pero no se almacena el resultado. 5- INSTRUCCIONES DE SALTO: Son instrucciones de modificacin de secuencia que alteran la ejecucin normal del programa, cargando el contador de programa con la nueva direccin en la que deseamos contine ejecutndose el programa. Los saltos o bifurcaciones pueden ser: - CONDICIONALES: Cuando son controlados por el estado de un indicador o flag, y basndose en dicho estado se decide si se salta o no. - INCONDICIONALES: Cuando modifican el contador de programa sin condicin previa. Dentro de cada uno de estos tipos, podemos encontrar adems la particularidad de que al efectuar los saltos se realicen con posibilidad de retorno o no. 6- INSTRUCCIONES DE ENTRADA/SALIDA: Son en realidad instrucciones de transferencia, pero no entre registros o posiciones de memoria, sino con elementos perifricos que permiten la comunicacin del microprocesador con el exterior. 7- INSTRUCCIONES DE CONTROL: Sirven para actuar internamente sobre el microprocesador, provocando detenciones en la ejecucin del programa, etc. 8- INSTRUCCIONES DE BIT: Trabajan o tratan bits independientes. 9- INSRUCCIONES DE DESPLAZAMIENTO: Desplazan o rtoan hacia la izquierda o hacia la derecha los bits de un registro (acumulador). LOS MODOS DE DIRECCIONAMIENTO: Los modos de direccionamiento son aquellos procedimientos empleados por el microprocesador para poder acceder a determinados operandos, instrucciones, posiciones de memoria, registros de entrada/salida, etc. Por tanto el objeto del direccionamiento es un valor o dato que se encuentra en un lugar de la memoria, en algn registro o en la propia instruccin. Los diferentes modos de direccionamiento que pueda emplear un microprocesador le proporcionan un determinado nivel de potencialidad, permitindole manejar datos y realizar operaciones con mayor facilidad. En general podemos diferenciar los siguientes tipos o modos de direccionamiento: 1- DIRECCIONAMIENTO INMEDIATO: En este caso el objeto (un operando) se encuentra includo en la instruccin, es decir, a continuacin del cdigo de la instruccin se aade el operando propiamente dicho. Las instrucciones que emplean este direccionamiento pueden ser de dos o tres bytes y son instrucciones de ejecucin rpida y sencilla. 2- DIRECCIONAMIENTO IMPLICITO: Las instrucciones que emplean este modo de direccionamiento tienen un solo byte y es la propia instruccin la que indica qu registro o direccin de memoria se va a utilizar en la operacin. 3- DIRECCIONAMIENTO ABSOLUTO: En este caso las instrucciones incluyen la direccin de memoria donde se encuentra el dato con el que se va a operar. En este tipo de direccionamiento pueden darse tres supuestos: a) La instruccin apunta a un registro que contiene la informacin deseada (direccionamiento tambin llamado de regsitro). b) La instruccin contiene la direccin completa en la que se encuentra el dato, empleando para ello tres bytes. c) Cuando la instruccin se refiere solo a una parte de la memoria (pgina). En este caso el byte ms alto lo suministra el contador de programa y el byte ms bajo se expresa a continuacin del cdigo de instruccin, por tanto solo se emplean dos bytes (Este direccionamiento tambin se llama de pgina base). 4- DIRECCIONAMIENTO DIRECTO RELATIVO: La instruccin en este caso contiene un valor determinado al que podemos llamar V. La direccin total se calcula sumando a V el valor que est almacenado en un registro alq ue haga referencia la instruccin. El valor de V puede ser tanto positivo como negativo. 5- DIRECCIONAMIENTO INDIRECTO: La instruccin contiene una direccin a la que llamaremos D1. El contenido de D1 no es el objeto directo de nuestra instruccin, sino que contiene otra direccin que llamaremos D2. Esta nueva direccin D2 es la que contiene el dato que s es objeto de la instruccin. Expresados ya los modos de direccionamiento con carcter general, pasamos ahora a ver los modos de direccionamiento que utiliza el microprocesador 8085 en particular, que son los cuatro siguientes: DIRECCIONAMIENTO DIRECTO ABSOLUTO: La instruccin contiene la direccin exacta y completa donde se encuentra el dato. Por ejemplo: LHLD A716H DIRECCIONAMIENTO POR REGISTRO: La instruccin lleva el registro en el que est el dato que va a ser tratado. Como por ejemplo: MOV A,B MOV B,C DIRECCIONAMIENTO POR REGISTRO INDIRECTO: En la instruccin se especifica un registro cuyo contenido apunta a una direccin de memoria en la que se encuentra el dato. Por ejemplo: MOV A,M M es una referencia simblica a una direccin apuntada o sealada por el par de registros HL. DIRECCIONAMIENTO INMEDIATO: La instruccin contiene el dato con el que se desea operar, pudiendo ser el dato de uno o dos bytes:

LXI H,A0B7H ADI 3AH Ventajas de ambos mtodos de E/S La principal ventaja de usar E/S independiente se aprecia en CPUs con capacidad limitada de direccionamiento. Debido a que la E/S independiente separa el acceso a E/S del acceso a memoria, el espacio de direcciones puede ser usado al completo para memoria. Las operaciones de E/S pueden ralentizar los accesos a memoria, si los buses de datos y direcciones son compartidos. Esto es porque el perifrico suele ser mucho mas lento que la memoria principal. En algunas arquitecturas la E/S independiente opera con un bus dedicado a E/S, solventando as este problema. La ventaja de usar E/S mapeadas en memoria es, dejando a un lado la complejidad extra que conlleva la E/S independiente, que la CPU requiere menos lgica interna y es mas barata, rpida y fcil de construir; esto sigue los principios bsicos de RISC, y es tambin ventajoso en sistemas embebidos. El hecho de que instrucciones regulares de memoria sean usadas para direccionar dispositivos tambin significa que todos los modos de direccionamiento de la CPU que estn disponibles para E/S lo estn tambin para memoria. Ya que los perifricos de 16 bits han quedado anticuados y han sido sustituidos por los de 32 y 64 bits, reservar rangos del espacio de direcciones para E/S no supone un gran problema. [editar] Ejemplo Considerar un sistema construido alrededor de un microprocesador de 8 bits. Tal CPU tendr un bus de direcciones de 16 bits, permitiendo direccionar 64 kibibytes (KiB) de memoria. En este sistema, los primeros 32 KiB de espacio de direcciones sera asignado a RAM, otros 16 KiB a ROM y el espacio restante a otros dispositivos como temporizadores, contadores, chips de visualizadores de video, dispositivos generadores de sonido, etc. El hardware de este sistema est organizado de forma que los dispositivos sobre el bus de direcciones solo respondern a direcciones particulares las cuales sern previstos para ellos; todas las dems direcciones sern ignoradas. Este es el trabajo del decodificador de direcciones y esto ser lo que establezca el mapa de memoria del sistema. De esta forma acabaramos con un mapa de memoria como este: Dispositivo RAM E/S de proposito general Controlador de sonido Rango de direcciones Tamao (hexadecimal) 0000 - 7FFF 8000 - 80FF 9000 - 90FF 32 KiB 256 bytes 256 bytes 2 KiB 16 KiB

Controlador de video/text-mapped display RAM A000 - A7FF ROM C000 - FFFF

Ntese que este mapa de memoria contiene lagunas, lo cual es bastante comn. Asumiendo que el cuarto registro del controlador de video establece el color de fondo de la pantalla, la CPU podr establecer este color escribiendo un valor en la posicin A003 usando su instruccin de escritura estndar. Usando el mismo mtodo grifos pueden ser visualizados en pantalla escribiendo valores de caracteres en una rea especial de la RAM dentro del controlador de video. Debido a su bajo coste la RAM permitir visualizadores de bits mapeados. [editar] Tipos bsicos de decodificacin de direcciones Exhaustivo 1:1 Una nica direccin para acceder a una localizacin en memoria fsica. Parcial n: 1 Un conjunto nico de n direcciones para referenciar a una localizacin en memoria fsica. Esto tiene la ventaja de que simplifica el hardware de decodificacin y los inconvenientes de, como ya hemos dicho antes, usar varias direcciones para una misma palabra, no detectar direcciones no implementadas y dificultar las modificaciones. Lineal - Las lneas de direcciones son usadas directamente sin lgica de decodificacin alguna. [editar] Decodificacin de direcciones incompleta Las direcciones pueden ser decodificadas completa o incompletamente por un dispositivo. La decodificacin completa conlleva chequear cada lnea del bus de direcciones, comunicando el bus de datos con la localizacin en memoria fsica correspondiente. La decodificacin incompleta o parcial usa lgica ms simple y normalmente ms barata que examina solo algunas lneas del bus de direcciones.Este simple circuito de decodificacin permite a un dispositivo responder a varias direcciones diferentes, creando copias virtuales del dispositivo en lugares diferentes del mapa de memoria. Todas estas copias se refieren al mismo dispositivo real, as que no hay una principal ventaja haciendo esto, excepto la simplificacin del decodificador. Comnmente, la descodificacin es programable, as el sistema puede reconfigurar su propio mapa de memoria como lo necesite.

You might also like