Está en la página 1de 7

Sierra Márquez Oscar David 1

Universidad Mexiquense del Bicentenario

Modos de direccionamiento

Los llamados modos de direccionamiento son las diferentes maneras de especificar en informática un operando dentro
de una instrucción (lenguaje ensamblador). Cómo se especifican e interpretan las direcciones de memoria según las
instrucciones.

Un modo de direccionamiento especifica la forma de calcular la dirección de memoria efectiva de un operando


mediante el uso de la información contenida en registros y / o constantes, contenida dentro de una instrucción de la
máquina o en otra parte.

Direccionamiento Directo

Se suma el desplazamiento dado al segmento de datos.

Direccionamiento directo que solo se aplica a una MOV entre una localidad de memoria y AL ó AX. Son instrucciones
muy comunes y tienen 3 bytes de longitud

Direccionamiento directo por desplazamiento: ídem anterior pero de 4 bytes

MOV AX,1234H (AX <- [DS x 10H + 1234H])


Sierra Márquez Oscar David 2
Universidad Mexiquense del Bicentenario

DIRECCIONAMIENTO INDEXADO

En este modo de direccionamiento, la dirección del operando también se calcula sumando un registro de la cpu al
campo de operando, este registro especifico para este uso llamado registro índice. En los ordenadores con organización
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 un caso
particular del direccionamiento indexado. A la cantidad que hay que sumar al registro índice para conseguir la dirección
del operando también 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,

En los dos apartados siguientes. En algunos ordenadores existen variantes del direccionamiento

Indexado en que se obtiene la dirección del operando sumando el contenido de varios registros con el desplazamiento
respecto a un registro y el elemento

Del vector mediante un registro índice

Registro base

En informática, o concretamente en el contexto de una base de datos relacional, un registro (también


llamado fila o tupla) representa unobjeto único de datos implícitamente estructurados en una tabla. En términos
simples, una tabla de una base de datos puede imaginarse formada de filas y columnas o campos. Cada fila de una tabla
representa un conjunto de datos relacionados, y todas las filas de la misma tabla tienen la misma estructura.

Un registro es un conjunto de campos que contienen los datos que pertenecen a una misma repetición de entidad. Se le
asigna automáticamente un número consecutivo (número de registro) que en ocasiones es usado como índice aunque lo
normal y práctico es asignarle a cada registro un campo clave para su búsqueda.

La estructura implícita de un registro y el significado de los valores de sus campos exige que dicho registro sea entendido
como una sucesión de datos, uno en cada columna de la tabla. La fila se interpreta entonces como una variable
relacional compuesta por un conjunto de tuplas, cada una de las cuales consta de dos ítems: el nombre de la columna
relevante y el valor que esta fila provee para dicha columna.

Cada columna espera un valor de un tipo concreto.

Direccionamiento implícito

En este modo, llamado también inherente, el operando se especifica en la misma definición de la instrucción. El modo
implícito se usa para hacer referencia a operandos de dos tipos:

- Registros: En el caso de que el código de operación se refiera en particular a un registro.

- Operandos en la pila: En el caso de que la operación se realice siempre sobre el dato situado en la cima de pila.

El primer caso es típico de las organizaciones de un solo acumulador. Generalmente en un ordenador de este tipo todas
las instrucciones que actúan sobre el acumulador utilizan direccionamiento implícito.
Sierra Márquez Oscar David 3
Universidad Mexiquense del Bicentenario

Direccionamiento inmediato (o literal)

En este modo es el operando el que figura en la instrucción no su dirección. En otras palabras el campo de operando
contiene él mismo, sin transformación alguna, la información sobre la que hay que operar. Este modo es útil para
inicializar registros o palabras de memoria con un valor constante.

DIRECCIONAMIENTO RELATIVO A REGISTRO

a)La instrucción NO contiene la dirección del operando >> debe ser calculada.

-La instr contiene un DESPLAZAMIENTO q hay q añadir a la dirección marcada por un puntero para obtener la dirección
final del operando>> RETRASO ADICIONAL.

-El puntero suele estar en un registro.

b) Permite acceder a un conjunto de direcciones de memoria a partir de una considerada como referencia.>> en el CD
emplea un nº de bits pequeño

c) Varios tipos

3.1) Direccionamiento relativo al registro contador del programa (PC)

a) puntero : PC; almacena la dirección de la siguiente instr.

b) Para direccionar instr cercanas a la instr en curso, para bucles...

3.2) Direccionamiento relativo al registro base

a) puntero: REGISTRO BASE.

b) la instr contiene la identificación del registro y el desplazamiento

c) Conveniente para zonas de datos (como listas).

3.3) Direccionamiento relativo a pila (LIFO)

a) puntero : SP (stack pointer); apunta a la dirección de mem donde se encuentra la cima de la pila.

b) DESPL. + valor SP = DIRECCIÓN DEL OBJETO

c) Si no existe C. de despl. >> solo se trabaja con la cima de la pila.

d) Permite instrucciones muy compactas.

-VENTAJA : flexibilidad.

-DESVENTAJA: complejidad

DIRECCIONAMIENTO INDIRECTO
Sierra Márquez Oscar David 4
Universidad Mexiquense del Bicentenario

a) El CD referencia la dirección de una palabra, q a su vez contiene la dirección completa del operando.

b) Para aplicaciones q utilizan datos situados en posiciones distantes en memoria

-VENTAJAS: 1) espacio de dirección grande; para N bits >> 2N espacio de direcc.

2) se puede combinar con los direccionamientos relativos

-DESVENTAJA: referencia extra a memoria

c) Variante : Direccionamiento indirecto con registro

-En el CD, hace referencia a un registro q contiene la dirección completa del operando.

-Emplea una referencia a memoria menos


Sierra Márquez Oscar David 5
Universidad Mexiquense del Bicentenario

ESTRUCTURA DE UN PROGRAMA EN ENSAMBLADOR

Un programa en lenguaje ensamblador estará formado por una secuencia de sentencias. Cada sentencia ocupa una sola
línea y tiene la siguiente estructura:

[etiqueta] [operacion] [operandos] [;comentarios]

Los cuatro campos de una sentencia son opcionales, si no aparece ninguno de ellos (una línea en blanco) tendríamos una
sentencia vacía.

Las sentencias se dividen en dos tipos:

* Instrucciones:

Estas sentencias representan órdenes al procesador y tras el proceso de compilación generan código ejecutable.

* Directivas:

Estas sentencias dirigen el proceso de compilación o construcción del programa ejecutable. No generan código
ejecutable. Normalmente se utilizan para aumentar la legibilidad del código fuente.

El fichero creado con todas las sentencias que constituyen un programa se denomina fichero fuente. Este tipo de fichero
tiene formato ASCII. Se recomienda que el fichero de código fuente tenga por extensión .ens.

El fichero fuente se compila utilizando el programa ensamblador. El programa ensamblador generará un nuevo fichero,
denominado fichero ejecutable, de igual nombre y de extensión .eje.

Este fichero tiene formato ASCII y contiene el código máquina de las instrucciones que componen el programa, así como
cierta información adicional para realizar la carga del programa en el simulador del computador elemental.

ESTRUCTURA DE UN FICHERO EN LENGUAJE ENSAMBLADOR

Los ficheros de código fuente escritos en lenguaje ensamblador se organizan en líneas. Cada una de las líneas del fichero
puede contener una directiva, una instrucción o ambas cosas a la vez en los casos en que sea posible. El carácter
separador de líneas es el retorno de carro, por lo que una instrucción no podrá ocupar más de una línea en el fichero
fuente.
Sierra Márquez Oscar David 6
Universidad Mexiquense del Bicentenario

Todos los ficheros fuente tienen que adecuarse a una estructura fija dividida en secciones.

La estructura a seguir se muestra a continuación:


escala EQU 1000 ;Definición de constantes simbólicas
ORIGEN 7F40h ;Definición del origen de carga del programa
INICIO ini;Definición de la etiqueta que marca la
;primera instrucción a ejecutar del programa
.PILA 100h ;Definición de la pila
.DATOS ;Definición de los datos del programa
dato1 VALOR 12h

.CODIGO ;Definición del código del programa
INI: MOV R5, R4

FIN

De todas las secciones posibles que pueden formar parte de una programa en lenguaje ensamblador, sólo será
obligatoria la sección de definición del código del programa. Todas las demás secciones serán opcionales pudiendo estar
presentes o no. Si aparece alguna de las secciones del esquema, tendrá que estar colocada en el orden indicado.

 Su estructura en un programa ejemplo muy simple:

   
Sierra Márquez Oscar David 7
Universidad Mexiquense del Bicentenario

 Hemos visto la estructura general. Ahora veremos la posición de los elementos del código por 4 columnas:

 Columna 1: Etiquetas. Las etiquetas se rigen por las siguientes normas:

 Debe situarse en la primera columna.

 Debe contener únicamente caracteres alfanuméricos.

 El máximo de caracteres es de 31.

 Columna 2: Operación. En esta columna se situarán las instrucciones. El campo del código de operación es el
único que nunca puede estar vacío; éste siempre contiene una instrucción o una directiva del ensamblador.

 Columna 3: Operandos El campo de operandos o de dirección puede contener una dirección o un dato, o
puede estar en blanco. Normanmente contendrá registros o literales con los que se operará (f, l ok , b y w).

 Columna 4: Comentario. El campo del comentario o de etiquetas es opcional. Aquí se situará cualquier
comentario personalizado que deseemos. Estos son útiles para saber qué hace un programa sin tener que descifrar
el código entero. El compilador (ensamblador) ignorará todo texto más allá del carácter punto y coma ";".

    Los comentarios generalmente se sitúan en la cuarta columna para describir la acción de una línea de código, pero
pueden situarse en cualquier parte de programa para describir cualquier otro evento, siempre que estén después del
carácter ";" (semicolon en inglés).

    Normalmente las columnas son separadas por una tabulación. El espacio mínimo entre dos columnas es de un
carácter, que puede ser un espacio en vez de una tabulación.

Delimitadores (separación entre campos)

 Los campos van separados sólo con espacios y/o tabulaciones. No agregue nunca otros caracteres (comas,
puntos, etc.)

 No utilice espacios extra, particularmente después de comas que separan operandos.( Ej: movlw 5, w )

 No use caracteres delimitadores (espacios y tabulaciones) en nombres o etiquetas.

También podría gustarte