Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Departamento de Automtica
MODOS DE DIRECCIONAMIENTO
La segmentacin en el 8086
Definicin de segmentos simplificada Constantes predefinidas Inicializacin de los registros de segmentos
Modos de direccionamiento
Inmediato Registro Memoria
2004 - 2005
UNIVERSIDAD DE ALCAL
Departamento de Automtica
La segmentacin en el 8086
Se basan en la arquitectura segmentada usada por Intel
Un segmento es una coleccin de instrucciones o datos cuyas direcciones son todas ellas relativas a un mismo registro de segmento.
2004 - 2005
UNIVERSIDAD DE ALCAL
Departamento de Automtica
UNIVERSIDAD DE ALCAL
Departamento de Automtica
2004 - 2005
UNIVERSIDAD DE ALCAL
Departamento de Automtica
Constantes predefinidas
Existen un conjunto de constantes predefinidas, que se pueden utilizar en cualquier parte del cdigo
@curseg: Indica el nombre del segmento activo @filename: Contiene el nombre (sin extensin pero con el punto) del fichero fuente @codesize: Indica un valor segn el modelo de cdigo empleado.
0 para small y compact; 1 para medium, large y huge.
UNIVERSIDAD DE ALCAL
Departamento de Automtica
La constante tiene el mismo nombre que la directiva, pero con @ en vez del punto
La constante indica el comienzo en memoria del segmento al que representa (en direcciones mltiplo de 16)
2004 - 2005 TEMA 3: MODOS DE DIRECCIONAMIENTO 6
UNIVERSIDAD DE ALCAL
Departamento de Automtica
2004 - 2005
UNIVERSIDAD DE ALCAL
Departamento de Automtica
Inicializacin de CS e IP
Los registros CS e IP se inicializan indicando una direccin de inicio en la directiva END
END [direccin de inicio]
direccin de inicio identifica la direccin de comienzo cuando el programa se carga. Normalmente se utiliza una etiqueta en la direccin de la primera instruccin del cdigo El registro CS se inicializa a dicho valor. El registro IP normalmente a 0 Slo un END debe tener direccin de inicio
2004 - 2005 TEMA 3: MODOS DE DIRECCIONAMIENTO 8
UNIVERSIDAD DE ALCAL
Departamento de Automtica
Inicializacin de DS
DS se debe inicializar con la direccin del segmento que se usar para datos
Se debe realizar en 2 pasos, porque un valor de memoria no se puede cargar directamente en un registro de segmento
UNIVERSIDAD DE ALCAL
Departamento de Automtica
Inicializacin de SS y SP
El registro de segmento SS se inicia automticamente con el valor del ltimo segmento de tipo STACK El registro SP se inicializa automticamente al tamao del segmento de pila As SS:SP apunta inicialmente al final de la pila. La pila se puede reinicializar a mano
MOV ax, @data MOV ss, ax MOV sp, OFFSET STACK
2004 - 2005 TEMA 3: MODOS DE DIRECCIONAMIENTO 10
UNIVERSIDAD DE ALCAL
Departamento de Automtica
Inicializacin de ES
El registro de segmento ES no se inicializa automticamente Hay que indicar, primero al ensamblador y luego al procesador que las variables de tipo FAR se van a acceder utilizando, por defecto, el registro ES. Si no se indica nada, el procesador utiliza el registro DS
ASSUME es:@fardata MOV ax, @fardata MOV es, ax
2004 - 2005
11
UNIVERSIDAD DE ALCAL
Departamento de Automtica
Modos de direccionamiento
Indican al procesador cmo calcular el valor actual de un operando en tiempo de ejecucin
El mismo cdigo mnemnico se codifica de forma diferente en funcin del tipo de operando
La misma instruccin tiene diferente tamao y temporizacin en funcin del tipo de operando
2004 - 2005 TEMA 3: MODOS DE DIRECCIONAMIENTO 12
UNIVERSIDAD DE ALCAL
Departamento de Automtica
2004 - 2005
13
UNIVERSIDAD DE ALCAL
Departamento de Automtica
Direccionamiento inmediato
Consisten en constantes numricas que son conocidas o calculadas al ensamblar el cdigo Los valores inmediatos se codifican directamente en el programa Las instrucciones tienen de lmite 8, 16 o 32 bits para los operandos inmediatos Las cadenas de caracteres de ms de 2 no pueden ser operandos inmediatos Los operandos inmediatos pueden ser fuente de la instruccin, pero nunca destino Algunas instrucciones usan un nico operando que es inmediato
2004 - 2005 TEMA 3: MODOS DE DIRECCIONAMIENTO 14
UNIVERSIDAD DE ALCAL
Departamento de Automtica
2004 - 2005
15
UNIVERSIDAD DE ALCAL
Departamento de Automtica
2004 - 2005
16
UNIVERSIDAD DE ALCAL
Departamento de Automtica
UNIVERSIDAD DE ALCAL
Departamento de Automtica
2004 - 2005
18
UNIVERSIDAD DE ALCAL
Departamento de Automtica
Direccionamiento de memoria
Muchas instrucciones utilizan datos de memoria El procesador debe calcular la direccin del dato a procesar La direccin del dato se denomina direccin efectiva El clculo de la direccin depende del tipo de acceso a memoria
Acceso directo a memoria Acceso indirecto a memoria
2004 - 2005
19
UNIVERSIDAD DE ALCAL
Departamento de Automtica
UNIVERSIDAD DE ALCAL
Departamento de Automtica
2004 - 2005
21
UNIVERSIDAD DE ALCAL
Departamento de Automtica
MOV bx, OFFSET stuff ; Carga la direccin de stuff en BX JMP stuff JMP etiq JMP ax JMP [bx] ... etiq: 2004 - 2005 TEMA 3: MODOS DE DIRECCIONAMIENTO 22 ; Salta al valor de stuff (que es la direccin de etiq) ; Salta a la direccin de etiq ; Salta a AX, que es el valor de stuff ; Salta a [BX] (valor en la direccin de stuff)
UNIVERSIDAD DE ALCAL
Departamento de Automtica
Se pueden utilizar separadamente o en parejas, con o sin desplazamiento El desplazamiento puede ser una constante y/o un acceso directo a memoria
2004 - 2005
23
UNIVERSIDAD DE ALCAL
Departamento de Automtica
Sintaxis
Descripcin
La direccin efectiva est contenida en el registro La direccin efectiva es la suma del contenido del registro y el desplazamiento
Base o indexado
Base indexado
La direccin efectiva es la suma del contenido del registro base y del contenido del registro ndice La direccin efectiva es la suma del contenido del registro base, del contenido del registro ndice y el desplazamiento 24
2004 - 2005
UNIVERSIDAD DE ALCAL
Departamento de Automtica
2004 - 2005
25
UNIVERSIDAD DE ALCAL
Departamento de Automtica
UNIVERSIDAD DE ALCAL
Departamento de Automtica
AND dx, red[si]+3 ;Hace la AND entre dx y la palabra indicada por DS:red + SI + 3 DEC BYTE PTR [bx][si] CMP cx, here[bp][si] PUSH place[bx][di]+2 CALL cs:table[bx] ; Decrementa el byte apuntado por DS:BX + SI ; Compara cx con la palabra indicada por SS:here + BP + SI ; Guarda en la pila el contenido de la posicin DS:place + BX + DI + 2 ; Llama a la rutina que se encuentra en la posicin CS:table + BX
2004 - 2005
27