Está en la página 1de 9

Modos de Direccionamiento del Procesador(2 de abril de 2011)

E. Sigcha, Estudiante de Ingeniera, U. Cuenca y J. Borja, Estudiante de Ingeniera, U. Cuenca.

Resumen.- El siguiente informe presenta los conceptos sobre modos de direccionamiento del procesador as como los tipos de direccionamiento que se usan en el lenguaje ensamblador y ejemplos de algunos de los mas importantes. II. Introduccin El campo de operacin de una instruccin especifica la operacin que se debe realizar. Esta debe ser ejecutada sobre algunos datos almacenados en registros del computador o en palabras de memoria, es decir, sobre los operandos. El modo de direccionamiento especifica la forma de interpretar la informacin contenida en cada campo de operando para localizar, en base a esta informacin, el operando. Los ordenadores utilizan tcnicas de direccionamiento con los siguientes fines: - Dar versatilidad de programacin al usuario proporcionando facilidades tales como ndices, direccionamientos indirectos, etc., esta versatilidad nos servir para manejar estructuras de datos complejas como vectores, matrices, etc. - Reducir el nmero de bits del campo de operando. Al usuario que tiene poca experiencia, la variedad de modos de direccionamiento en un ordenador le puede parecer excesivamente complicada. Sin embargo, la disponibilidad de diferentes esquemas de direccionamiento le da al programador experimentado flexibilidad para escribir programas que son ms eficientes en cuanto a nmero de instrucciones y tiempo de ejecucin. Es tal la importancia de los modos de direccionamiento que la potencia de una mquina se mide tanto por su repertorio de instrucciones como por la variedad de modos de direccionamiento que es capaz de admitir. Definicin: Los modos de direccionamiento de un ordenador son las diferentes formas de transformacin del campo de operando de la instruccin en la direccin del operando.

III. Modos de direccionamiento ms usuales En los prrafos siguientes se irn describiendo los modos de direccionamiento ms frecuentes. La mayora de estos modos son comunes a muchas mquinas, sin embargo, hay otros que slo se usan en determinados procesadores.

Fig 1. Clasificacin de los Modos de Direccionamiento

Direccionamiento implcito En este modo, llamado tambin inherente, el operando se especifica en la misma definicin de la instruccin. El modo implcito se usa para hacer referencia a operandos de dos tipos: - Registros: En el caso de que el cdigo de operacin se refiera en particular a un registro. - Operandos en la pila: En el caso de que la operacin se realice siempre sobre el dato situado en la cima de pila. El primer caso es tpico de las organizaciones de un solo acumulador. Generalmente en un ordenador de este tipo todas las instrucciones que actan sobre el acumulador utilizan direccionamiento implcito. En el segundo caso estn la mayora de las instrucciones de los ordenadores con organizacin de pila. Estas operaciones llevan implcitos los operandos que son los elementos de la cima de pila. Esto se debe a que en este tipo de mquinas la mayora de las operaciones no tienen campos de direccin. Tambin estn en este caso las instrucciones PUSH y POP de la mayora de los ordenadores cuyo operando implcito tambin es, como en el caso anterior, la cima de pila.

Es un caso particular de direccionamiento absoluto que utiliza 2 bytes, uno para el cdigo de operacin y otro para indicar el operando. El operando indica la direccin de la pgina 0 a la que deseamos acceder. Al ser ejecutada por el microprocesador ,el byte bajo de la direccin del dato se toma del segundo byte de la instruccin, y el byte alto del bus de direcciones se coloca automticamente a 00h. Por lo tanto, este mtodo de direccionamiento proporciona un mayor aprovechamiento de la memoria y una velocidad de ejecucin mayor que el direccionamiento absoluto. Un buen mtodo de programacin suele ser reservar la pgina cero (del byte 0000h al 00FFh de la memoria) para la declaracin de variables. Ejemplo: LDA 3AH Esta instruccin carga en el acumulador el contenido de la posicin de memoria 003AH.Dependiendo del contenido de esta posicin de memoria se puede alterar el contenido de los flags N y Z. En la siguiente figura puede apreciarse el calculo de la direccin efectiva y como al ejecutarse la instruccin el PC aumenta en dos unidades. El cdigo de operacin de esta instruccin es A5.

Ejemplo: LDA #2FH Esta instruccin carga en el acumulador el dato hexadecimal 2F es decir el nmero binario 00101111. En el modelo de programacin de la siguiente figura, se muestra el movimiento de datos que aparece cuando se realiza la operacin. El cdigo de operacin de LDA en modo inmediato es A9h. Dependiendo del dato a cargar en el acumulador pueden afectarse los flag N y Z.

Fig 3. Funcionamiento del Direccionamiento Inmediato

- Direccionamiento directo por registro Se mencion anteriormente que el campo de direccin de una instruccin puede especificar una palabra de memoria o un registro M procesador. Cuando se da este ltimo caso se dice que el operando est especificado con direccionamiento directo por registro, en tal caso, el operando reside en uno de los registros del procesador que es seleccionado por un campo de registro de k bits en la instruccin. Un campo de k bits puede especificar uno de 2k registros. Este modo es tpico de los ordenadores con organizacin de registros de uso general. Las ventajas de este modo son: - El acceso a los registros es muy rpido, por tanto el direccionamiento por registro debe usarse en las variables que se usen con ms frecuencia para evitar accesos a memoria que son ms lentos, un ejemplo muy tpico del uso de este direccionamiento son los ndices de los bucles. - El nmero de bits necesarios para especificar un registro es mucho ms pequeo que el necesario para especificar una direccin de memoria, esto es debido a que el nmero de registros del procesador es muy pequeo comparado con el nmero de direcciones de memoria. Sin embargo, hay que tener en cuenta que en los ordenadores modernos

Fig 2. Funcionamiento del Direccionamiento Implcito

- Direccionamiento inmediato (o literal) En este modo es el operando el que figura en la instruccin no su direccin. En otras palabras el campo de operando contiene l mismo, sin transformacin alguna, la informacin sobre la que hay que operar. Este modo es til para inicializar registros o palabras de memoria con un valor constante. Las instrucciones que utilizan este modo de direccionamiento tienen una longitud de 2 bytes. El primer byte, como en todas las instrucciones, indica el cdigo binario de operacin y el segundo es el operando. Precediendo al operando se utiliza el smbolo #.

el nmero de considerablemente.

registros

ha

aumentado - Direccionamiento indirecto En este modo el campo de operando de la instruccin indica la localizacin de la direccin efectiva del operando. El modo de direccionamiento indirecto puede adquirir diferentes formas segn cul sea el lugar donde se encuentre la direccin del operando. En general, todos los modos de direccionamiento tienen su versin indirecta que aade un eslabn ms a la cadena del direccionamiento. Por ejemplo existe el direccionamiento indirecto por registro, en el que el registro especificado contiene la direccin del operando, no el operando mismo. Este direccionamiento es til cuando se trabaja con punteros ya que los punteros son variables que contienen las direcciones de los operandos, no los operandos mismos. Este modo de direccionamiento se emplea solamente con la instruccin JMP. El funcionamiento es exactamente igual que el direccionamiento post-indexado, con la diferencia de usar el registro X como registro de ndice y la direccin es de dos bytes, no limitadose de esta manera a pgina cero la direccin intermedia como el direccionamiento post-indexado. Ejemplo: JMP [10A4H],X Si las direcciones 10A4H y 10A5H contienen respectivamente 20H y 21H y el valor del registro X es 03H, tras la ejecucin de esta instruccin el contador de programa se carga con el contenido de la direccin de memoria 2123H. Direccin Base : 10A4H Direccin intermedia : 2120H Offset : + 03H -------------------------------Direccin efectiva : 2123H En la figura siguiente se muestra el clculo de la direccin efectiva sobre el modelo de programacin. El cdigo de operacin de esta instruccin es 7C.

- Direccionamiento directo (o absoluto) Este es el modo de direccionamiento ms sencillo. El campo de direccin no necesita transformacin alguna para dar la direccin efectiva, es decir la funcin que transforma el campo de operando en la direccin efectiva es la identidad. Esto significa que el campo de operando es ya la direccin efectiva. Este direccionamiento slo se usa en ordenadores pequeos en que el programa siempre se sita en la misma zona de memoria ya que dificulta la relocalizacin de los programas, es decir que el cdigo de los programas no dependa de su situacin en memoria. Ordinariamente este modo slo se usa para acceder a direcciones del sistema que normalmente se refieren a operaciones de entrada y salida ya que estas direcciones no dependen del programa. Las instrucciones que utilizan este modo de direccionamiento estn compuestas por tres bytes, uno de cdigo de operacin y dos de operando. Los dos bytes que siguen al cdigo de operacin especifican la direccin absoluta de memoria en la que se encuentra el dato a procesar. Esta direccin est almacenada en memoria en orden inverso, de manera que, primero se encuentra el byte bajo y despus el byte alto. Como puede verse en la representacin que ilustra el ejemplo. Ejemplo: LDA 0455H Esta instruccin carga en el acumulador el contenido de la posicin de memoria 0455H.Dependiendo del cont nido de esta posicin de memoria se puede alterar el contenido de los flags N y Z. El cdigo de operacin de esta instruccin es AD. En la figura siguiente, puede apreciarse el calculo de la direccin efectiva y como al ejecutarse la instruccin el PC aumenta en tres unidades.

Fig 4. Funcionamiento del Direccionamiento Absoluto

Este modo de direccionamiento es usado muy frecuentemente en programas cuyo cdigo deba ser independiente de la posicin de memoria donde estn situados (programas relocalizables) ya que el desplazamiento es independiente de la localizacin del programa. Tambin se usa con mucha frecuencia en instrucciones de bifurcacin. Los apartados siguientes se refieren a diferentes versiones de direccionamientos relativos a registros.
Fig 5. Funcionamiento del Direccionamiento Indirecto

- Direccionamiento relativo Hay algunos modos de direccionamiento en que se hace uso de una propiedad muy generalizada de los programas denominada localidad de referencia, esta propiedad consiste en que las direcciones referenciadas por los programas no suelen alejarse mucho unas de otras y, por tanto, suelen estar concentradas en una parte de la memoria. Estas consideraciones nos llevan a la conclusin de que no es necesario utilizar todos los bits de la direccin de memoria en el campo de operando, basta utilizar los bits precisos para cubrir la parte de memoria donde estn incluidas las direcciones a las que el programa hace referencia. Esto puede hacerse tomando corno referencia un punto de la memoria y tomando como campo de operando la diferencia entre ese punto y la direccin efectiva del operando. La direccin que se toma como punto de referencia puede residir en un registro de la CPU y, por tanto, sumando el contenido de ese registro con el campo de operando obtendremos la direccin efectiva. Hay varios direccionamientos basados en esta tcnica que reciben diferentes nombres dependiendo de cul sea el registro en el que radica la direccin tomada como referencia. Todos ellos podran catalogarse como direccionamientos relativos a un registro. El direccionamiento denominado habitualmente relativo toma como valor de referencia el registro contador de programa. Cuando se usa este modo de direccionamiento, el campo de operando consiste en un nmero (normalmente con signo) que expresa la diferencia entre la direccin del dato y la direccin siguiente a la instruccin en curso (contenida en el contador de programa). Si el campo de operando, llamado en este caso desplazamiento u offset, es positivo el operando residir en una direccin posterior a la de la instruccin y si es negativo, en una direccin anterior.

Este modo de direccionamiento es utilizado exclusivamente por las instrucciones de salto condicional (branch). La direccin de memoria a la que se transfiere el control del programa se obtiene sumando el valor del contador de programa al segundo byte de la instruccin, denominado "offset". Este offset es un nmero en complemento a-2, con lo que se pueden efectuar saltos de hasta 127 posiciones hacia adelante o 128 hacia atrs. Ejemplo: BNE 55H Si la instruccin esta contenida en las posiciones de memoria 0400H y 0401H del programa, el valor del PC actualizado ser 0400H+2H cuando el flag Z vale "1". Si el flag Z del registro de Status es "0" el contador de programas pasr a valer 0400H+2+55H si el flag Z es "0".) PC actualizado 0402H Offset + 55H --------------------------Direccin de salto 0457H Podemos ver el clculo de la direccin efectiva en la siguiente figura, cuando el flag Z es "0". Las instrucciones que emplean este modo de direccionamiento pueden tardar en ejecutarse 2 ciclos de reloj si no se cumple la condicin, 3 ciclos si se cumple la condicin de salto y 4 ciclos si se salta de pgina.

Fig 2. Funcionamiento del Direccionamiento Relativo

- Direccionamiento por base y desplazamiento Este modo de direccionamiento se fundamenta en la propiedad de localidad de referencia mencionada anteriormente. La direccin que se toma como referencia de la zona de memoria en la que estn localizados los datos se deposita en un registro denominado registro base y el campo de operando indica la diferencia entre el registro base y la direccin M operando. Normalmente se toma como referencia (registro base) la direccin de comienzo de la zona de memoria ocupada por un programa. Por tanto, la direccin efectiva del operando se calcular sumando el contenido del registro base con el campo de operando. Este modo de direccionamiento se usa en ordenadores que pueden mantener en memoria varios programas ya que, de esta forma, los diferentes registros base pueden contener las direcciones de comienzo de cada uno de los programas. Esto es muy til porque facilita la relocalizacin de los programas para situar el programa en una zona de memoria diferente bastar con cambiar el contenido de su registro base, no ser necesario cambiar ninguno de los campos de operando. - Direccionamiento indexado En este modo de direccionamiento, la direccin del operando tambin se calcula sumando un registro de la CPU al campo de operando, este registro es un registro especfico para este uso llamado registro ndice. En los ordenadores con organizacin de registros generales, el registro ndice puede ser cualquiera de los registros de la CPU. En los ordenadores en que el contador de programa es considerado como un registro de uso general (PDP 11 y VAX) el modo relativo es un caso particular del direccionamiento indexado. A la cantidad que hay que sumar al registro ndice para conseguir la direccin del operando tambin se le llama desplazamiento u offset. Este modo de direccionamiento es especialmente til para el

direccionamiento de vectores y matrices en bucles ya que, si se quieren direccionar elementos consecutivos del vector o matriz, basta mantener en el desplazamiento la direccin del primer elemento e ir incrementando el registro ndice. Tambin sirve para acceder de forma relativa a elementos de vectores cercanos a uno dado, para ello, se carga la direccin del elemento de referencia en el registro ndice y despus se accede mediante direccionamiento indexado, con el desplazamiento adecuado, al anterior, al siguiente, etc., esto mismo tambin es aplicable a pilas, en que, en ocasiones, hay que acceder a datos cercanos, por encima o por debajo, al dato sealado por algn apuntador. Una consecuencia de todo esto es una modalidad de direccionamiento indexado de que disponen algunos ordenadores, denominada autoindexacin, que hace que el registro ndice sea incrementado o decrementado en el tamao del operando antes o despus de acceder al mismo. Los ordenadores que poseen autoindexacin incorporan los modos de direccionamiento descritos en los dos apartados siguientes. En algunos ordenadores existen variantes del direccionamiento indexado en que se obtiene la direccin del operando sumando el contenido de varios registros con el desplazamiento, esto puede servir para especificar el comienzo de un vector mediante un desplazamiento respecto a un registro y el elemento del vector mediante un registro ndice. Direccionamiento postincremental autoincremental o

En este modo, la direccin del operando se encuentra en un registro y ste es incrementado, despus de acceder al operando, en el tamao del mismo. Este modo es til para manejar vectores y matrices como se vea en el apartado anterior. Tambin se puede utilizar para extraer datos de pilas (que crezcan hacia direcciones bajas) ya que, si el registro sobre el que se aplica este modo es el apuntador de pila, despus de la operacin el apuntador sealar al siguiente elemento de la pila. Direccionamiento predecremental autodecremental o

En este modo para obtener la direccin del operando hay que decrementar un registro en el tamao del operando; el nuevo contenido del registro despus de efectuar esa operacin, es la direccin del operando.

Para finalizar, veamos un resumen de las utilidades de los modos de direccionamiento usados con ms frecuencia. TABLA I Utilidades de algunos Modos de Direccionamiento

REFERENCIAS
(1)http://www.terra.es/personal/fremiro/modos_de_dire ccionamiento.htm (2)http://www.mailxmail.com/curso-arquitecturaordenadores/modos-direccionamiento-mas-usuales-5

Conjunto de Instrucciones para Procesadores Intel(2 de abril de 2011)


E. Sigcha, Estudiante de Ingeniera, U. Cuenca y J. Borja, Estudiante de Ingeniera, U. Cuenca.

RESUMEN Se dan conceptos sobre los conjuntos instrucciones de los procesadores. El documento contiene informacin sobre las caractersticas del conjunto de instrucciones as como tambin de los formatos y tipos de instrucciones de los procesadores Intel. Tambin contiene ejemplos sobre los tipos de instrucciones. En lo fundamental este documento nos sirve para conocer ms sobre el conjunto instrucciones de los procesadores Intel.
I. INTRODUCCION

puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseo particular de una CPU. El trmino describe los aspectos del procesador generalmente visibles a un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones, entre otros aspectos.
III. CARACTERISTICAS DEL CONJUNTO DE INSTRUCCIONES

Las instrucciones mquina son las acciones elementales que puede ejecutar un computador. La arquitectura de un procesador entendida como el conjunto de recursos operativos disponibles por un programador a nivel de lenguaje mquina queda definida por el repertorio de instrucciones (ISA: Instruction Set Architecture). En general, una instruccin codifica una operacin bsica que el computador realiza sobre unos datos ubicados en la memoria o en los registros de la mquina y a los que accede utilizando un modo de direccionamiento. Por consiguiente, la arquitectura ISA de un procesador viene determinada por los siguientes factores: Tipos de datos y formatos que pueden manejar las instrucciones: naturales, enteros, reales, caracteres, etc. Modos de direccionamiento de los datos en memoria: inmediato, directo, indirecto, etc. Estos dos factores son determinantes para la implementacin eficiente de las estructuras complejas de datos de un lenguaje de alto nivel.
II. QUE ES EL CONJUNTO DE INSTRUCCIONES?

Las caractersticas que se pretende que tenga un conjunto de instrucciones son cuatro, principalmente:

Completo: Que se pueda realizar en un tiempo finito cualquier tarea ejecutable con un ordenador (computable o decidible). Eficiente: Que permita alta velocidad de clculo sin exigir una elevada complejidad en su UC y ALU y sin consumir excesivos recursos (memoria), es decir, debe cumplir su tarea en un tiempo razonable minimizando el uso de los recursos. Autocontenidas: Esto es, que contengan en s mismas toda la informacin necesaria para ejecutarse. Independientes: Que no dependan de la ejecucin de alguna otra instruccin.
IV. FORMATOS DE LAS INSTRUCCIONES

Un conjunto de instrucciones o repertorio de instrucciones, juego de instrucciones o ISA (del ingls Instruction Set Architecture, Arquitectura del Conjunto de Instrucciones) es una especificacin que detalla las instrucciones que una CPU de un ordenador

El formato de la instrucciones es un conjunto de especificaciones que indican como debe ser interpretado el patrn de bits de una instruccin de mquina para logra su Ejecucin dentro del computador. El formato de la instruccin nos indica cual es el cdigo de operacin y cuales los operandos que la instruccin especifica, tanto explcita como implcitamente.

V.

TIPOS DE INSTRUCCIONES TABLA I

RCL RCR

Rotacin izquierda con acarreo incluido Rotacin derecha con acarreo incluido

TRANSFERENCIA DE DATOS DESCRIPCION Transfiere dato de fuente a destino Intercambia contenido entre fuente y destino PUSH Introduce en la pila el dato fuente POP Extrae de la pila una palabra y la deja en destino IN Carga AX con el dato entrante del puerto fuente. INB Carga AL con el puerto fuente OUT Escribe AX en el puerto destino OUTB Escribe AL en el puerto destino ARITMETICA BINARIA NOMBRE DESCRIPCION NEG Hace negativo a destino ADD Suma fuente y destino ADC Suma fuente destino y acarreo SUB Resta fuente de destino SBB Resta fuente + acarreo de destino MUL Multiplica fuente con acumulador IMUL Igual que MUL pero se consideran los nmeros con signo DIV Divisin de nmeros no signados IDIV Igual q DIV pero los argumentos se consideran signados INC Incrementa destino DEC Decrementa destino NOMBRE MOV XCHG

CONTROL DEL PROGRAMA DESCRIPCION NOMBRE Salto directo JMP Salta si es igual JE Salta si es cero JZ Salta si no es igual JNE Salta si no es cero JNZ Salta si es negativo JS Salta si es positivo JP Salta si hay paridad par JPE Salta si hay paridad impar JPO Salta si esta por debajo JB Salta si no esta por arriba JNA Verifica TEST Realiza un bucle CX veces LOOP Llama subrutina en el mismo segmento. CALL RETS
El salto puede ser largo corto o indirecto Regreso se subrutina de otro segmento

TABLA I (CONTINUACION) CONTROL DEL SISTEMA


NOMBRE INT IRET CLI STI HLT NOP CLC STC CMC PUSHF POPF DESCRIPCION Interrupcin de software Vuelta de interrupcin Borra mascara de interrupcin Habilita interrupciones INT Se va al estado halt No operacin Borra el acarreo Pone a uno el acarreo Complementa el acarreo Guarda F en la pila Rescata F de la pila

TABLA I (CONTINUACION) OPERACIONES LOGICAS


NOMBRE NOT AND OR XOR DESCRIPCION Complemento de destino Operacin and. Operacin or. Operacin or exclusivo. GESTION DE CADENAS NOMBRE DESCIPCION REP Repite la siguiente instruccin CX veces MOVSB Mueve el octeto [DI] [SI] MOVSW Mueve la palabra [DI] [SI] CMPSB Compara los octetos apuntados por DI y SI CMPW Compara las palabras apuntados por DI y SI SCASB Busca el carcter contenido en AL en la cadena apunta por DI SACASW Busca la palabra contenida en AX en la cadena apunta por DI ROTACIONES Y DESPLAZAMIENTOS SHL Desplazamiento lgico hacia la izquierda SHR Desplazamiento lgico hacia la derecha SUR Desplazamiento lgico hacia la derecha, CL posiciones SAL Desplazamiento aritmtico hacia la izquierda ROL Rotacin a la izquierda Rotacin a la derecha ROR

VI.

EJEMPLOS

MUL: Multiplica con el acumulador. Si fuente es de 8 bits, se multiplica con AL y el resultado se almacena en AX y el resultado se deja en DX:AX. DX tendr la parte ms significativa. MUL supone q los operandos son positivos. DIV: Divisin de nmeros no asignados. El acumulador contendr el dividendo y fuente el divisor. Existen dos modalidades. En la divisin de 8 bits, el dividendo es un nmero de 16 bits almacenado en AX. El consiente se deja en AL y el resto en AH. Si la divisin es de 16 bits el dividendo es de 32 bits, almacenado en DX:AX , el cociente se dejara en AX y el resto en DX. CMPW: Compara las palabras apuntadas por DI y SI. En el caso de CMPC y CMPW normalmente se utiliza la opcin REPZ o REPE, que se repetir la instruccin hasta que CX sea cero o que se detecte una igualdad. Con RENPZ Y REPNE se repite

hasta que CX =0 o que se detecte una desigualdad lo q se detecte primero. JMP: Salto directo (en el mismo segmento). El objetivo puede ser de 16 bits, de 8 bits, o indirecto. REFERENCIAS (1)es.wikipedia.org/wiki/Conjunto_de_instruccion es (2)es.kioskea.net/contents/pc/processeur.php3 (3) http://memnon.ii.uam.es/~eloy/media/NEMONIC OS8086.pdf