Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ec t4 PDF
Ec t4 PDF
Curso 2008-2009
Transparencia: 2 / 47
ndice
Introduccin Juego de instrucciones Estructura de un programa ensamblador del i80x86/88 Modos de direccionamiento Ejemplo de hardware real: i80x86/88 Segmentacin de memoria en i80x86/88 Modos de direccionamiento en el i80x86/88 Formato de instrucciones: Ejemplos de instrucciones Formato de instrucciones en i80x86/88
Transparencia: 3 / 47
Introduccin (I)
Instruccin: Operacin expresada mediante la codificacin binaria de cadenas de 1's y 0's. Se le denomina lenguaje mquina
El lenguaje mquina es distinto para cada computador. Excepto cuando existe compatibilidad entre familias
Repertorio de instrucciones o juego de instrucciones: Conjunto de rdenes que puede ejecutar un computador Lenguaje ensamblador: Juego de instrucciones expresado con mnemnicos
Departamento de Automtica rea de Arquitectura y Tecnologa de Computadores Estructura de Computadores I. T. I. de Gestin / Sistemas
Transparencia: 4 / 47
Introduccin (y II)
Programa: Conjunto ordenado de instrucciones que resuelve una tarea
Secuencia bsica de ejecucin de una instruccin: Lectura de memoria de la instruccin Interpretacin de la instruccin (por la unidad de control) Ejecucin de la instruccin (bajo las seales generadas por la unidad de control) Actualizacin del contador de programa Las instrucciones se pueden clasificar segn: El juego de instrucciones: operaciones posibles y determinacin de la siguiente instruccin a ejecutar El modo de direccionamiento: ubicacin de operandos Formato de las instrucciones: codificacin en binario
Estructura de Computadores I. T. I. de Gestin / Sistemas
Transparencia: 5 / 47
Transparencia: 6 / 47
Copian en el operando destino la informacin del operando fuente sin modificar ste No modifican el estado de los flags Generalmente transfieren palabras pero pueden mover fracciones de ellas o bloques enteros
transfiere el operando fuente al destino transfiere el operando fuente a la pila SP SP - 2 [SP] Operando fuente transfiere el ltimo dato de la pila al operando destino Operando destino [SP] SP SP + 2
Estructura de Computadores I. T. I. de Gestin / Sistemas
Transparencia: 7 / 47
Transparencia: 8 / 47
Transparencia: 9 / 47
Las condiciones ms frecuentes admitidas por el 80x86/8088 son: Z Cero G - Mayor que E - Igual [N] L - Menor que C - Acarreo A - Superior* S - Signo B - Inferior* O - Overflow (Desbordamiento) P - Paridad PE - Paridad par PO - Paridad impar CXZ - CX=0
[N]
[E]
Transparencia: 10 / 47
Bucles: operacin (decremento de contador) + salto condicional sobre la operacin LOOP Etiq realiza un bucle: CX CX -1; Si CX 0 entonces IP Etiq, si no IP siguiente instruccin
Transparencia: 11 / 47
Llamadas a subrutinas: salvan la posicin de retorno Las instrucciones de salto a la subrutina y de regreso al programa principal van emparejadas LLAMADA A UNA SUBRUTINA CALL Etiq: salto con retorno a una subrutina SP SP-2; [SP]IP; IP Etiq 1) Guardar en la pila la direccin de la siguiente instruccin a ejecutar 2) IP Direccin de la subrutina SP
SP
Direccin de retorno
1234h
1234h
Transparencia: 12 / 47
RETORNO DE UNA SUBRUTINA RET: retorno a la secuencia principal IP [SP]; SP SP+2 1) Extraer de la pila la direccin de la siguiente instruccin a ejecutar 2) IP Direccin de retorno de la subrutina
SP
Direccin de retorno
SP
1234h
1234h
Transparencia: 13 / 47
Las interrupciones implican una ruptura en la secuencia del programa saltando al cdigo que da ese servicio y cuando se ha terminado, se vuelve a la ejecucin del programa en curso Pueden ser: Interrupciones hardware: son generadas por los circuitos asociados al microprocesador en respuesta a algn evento como pulsar una tecla del teclado Interrupciones software: son generadas por un programa para llamar a ciertas subrutinas almacenadas en memoria ROM o RAM. Es posible cambiarlas y crear otras nuevas. Los pasos para llamar a una interrupcin son: identificar la interrupcin necesaria, pasar los parmetros a la subrutina, llamar a la interrupcin Las interrupciones salvaguardan los flags y los registros que emplean
Estructura de Computadores I. T. I. de Gestin / Sistemas
Transparencia: 14 / 47
LLAMADA A UNA INTERRUPCIN INT: llamada a una rutina de interrupcin (CALL + flags a la pila) 1) Guardar en la pila los flags 2) Guardar en la pila la direccin de la siguiente instruccin a ejecutar 3) IP Direccin de la interrupcin
SP SP 1234h
Direccin de retorno Flags
1234h
Transparencia: 15 / 47
REGRESO DE UNA INTERRUPCIN IRET: retorno de la rutina de interrupcin (RET + devuelve flags)
1) Guardar en la pila la direccin de la siguiente instruccin a ejecutar 2) IP Direccin de la subrutina 3) Flags Flags anteriores a la llamada a la interupcin
SP
Direccin de retorno Flags
SP
1234h
1234h
Transparencia: 16 / 47
Transparencia: 17 / 47
Transparencia: 18 / 47
Transparencia: 19 / 47
Transparencia: 20 / 47
10
Transparencia: 21 / 47
Transparencia: 22 / 47
El modo de direccionamiento determina la ubicacin de un operando: En la propia instruccin En un registro En memoria principal
Modos de direccionamiento Inmediato Directo De registro De memoria De pgina base Relativo Al contador de programa A un registro base A un registro ndice A pila Indirecto Implcito P 8086/88 Inmediato A registro (No existe) Directo Solamente para saltos Relativo a base Mediante ndice Mediante ndice y base A pila (No existe) Algunas instrucciones Estructura de Computadores I. T. I. de Gestin / Sistemas Ejemplos MOV AX, 15H MOV AX, BX MOV CX, ETIQUETA MOV BX+ARTCULO, AL MOV DL, VECTOR[SI] MOV AH, [BH][SI]+ARRAY PUSH BX
11
Transparencia: 23 / 47
El operando se encuentra en la propia instruccin Ejemplo: MOV CX, 0010h (Su cdigo mquina es B9 10 00 h ) La manera de expresar el dato inmediato depende del formato de la mquina Big endian Little endian
Transparencia: 24 / 47
Es directo cuando la instruccin contiene el lugar donde se encuentra el operando Segn el lugar donde se encuentra el operando puede ser: Direccionamiento directo a registro Direccionamiento directo a memoria Direccin completa (p. ej. Z80 sobre 64 Kb con 16 bits) Direccin sobre una pgina del mapa de memoria; tambin se conoce como direccionamiento de pgina base
12
Transparencia: 25 / 47
La instruccin indica el desplazamiento del operando con respecto a un puntero La direccin efectiva es calculada por la unidad de control sumando, o restando, el desplazamiento al puntero de referencia que suele estar en un registro Dependiendo del puntero se tienen diferentes modos de direccionamiento
Ejemplos: MOV AL, [BX] ADD CH, Numero[SI] MOV BL, [SP+4]
Transparencia: 26 / 47
13
Transparencia: 27 / 47
La posicin indicada por la instruccin no es el operando sino la direccin de memoria en la que se encuentra, por lo que se necesita un acceso adicional a memoria La direccin de memoria se puede dar mediante: Direccionamiento directo a memoria Direccionamiento relativo Es posible que se realicen mltiples niveles de indireccin Su utilidad ms comn es la de acceso a diversas informaciones mediante tablas de punteros
Transparencia: 28 / 47
En la instruccin no se indica explcitamente el lugar donde se encuentra el operando Requiere que el programador conozca con que operandos se est trabajando
14
Transparencia: 29 / 47
Registros de segmentos CS SS DS ES 2
Transparencia: 30 / 47
El 80x86/88 se puede direccionar 1MB con 20 lneas de direccin pero sus registros internos tan solo son de 16 bits Solucin segmentacin de memoria Las direcciones se generan combinando una base y un desplazamiento, cada uno de 16 bits: Direccin fsica = base x 10h + desplazamiento Cada base genera una pgina o segmento de 64 Kb con funciones especificas:
Base Registro de segmento CS SS DS ES Funcin Contiene el cdigo ejecutable Se reserva para la pila (stack) Contiene los datos Segmento extra de datos
Estructura de Computadores I. T. I. de Gestin / Sistemas
15
Transparencia: 31 / 47
Transparencia: 32 / 47
Registros de segmentos CS SS DS ES 2
16
Transparencia: 33 / 47
Modo de direccionamiento Directo Relativo a base Mediante ndice Mediante ndice y base
Ejemplo MOV CL, Etiqueta MOV AH, [BX]+ Elemento MOV DL, Elemento[SI] ADD CH, Elemento[BX][SI]
Clculo direccin efectiva DF = DS x 10h + Etiqueta DF = DS x 10h + BX + Elemento DF = DS x 10h + SI + Elemento DF = DS x 10h + BX + SI + Elemento
La segmentacin solamente se emplea cuando uno de los operandos se encuentra en memoria En el caso de que se trate de la direccin de la siguiente instruccin a ejecutar se emplear CS y no DS Si lo que se busca es un operando en la pila el registro de segmento a emplear ser el SS
Transparencia: 34 / 47
EJEMPLOS Direccin fsica de memoria de la instruccin a ejecutar: DF = CS x 10h + IP = 0100h x 10h + 0025h = 01025h Direccin fsica de memoria del operando fuente MOV AL, Num[SI] DF = DS x 10h + Num + SI = 0200h x 10h + 1500 h + 0010h = 03510h Direccin fsica en la que se encuentra la cabecera de la pila DF = SS x 10h + SP = 0300h x 10h + 0200h = 03200h
Departamento de Automtica rea de Arquitectura y Tecnologa de Computadores Estructura de Computadores I. T. I. de Gestin / Sistemas
17
Transparencia: 35 / 47
Es la representacin en binario de cada una de las instrucciones Cada instruccin contiene explicitamente o implicitamente toda la informacin que necesita para ejecutarse: Cdigo de operacin, indica a la UC el tipo de operacin, aritmtica, lgica, de transferencia, salto, etc. El valor o la posicin donde se hallan los operandos El lugar donde se tiene que depositar el resultado Direccin de la siguiente instruccin a ejecutar
Cod. operacin
Operandos
Resultado
Transparencia: 36 / 47
18
Transparencia: 37 / 47
Z80
L. Mquina
L. Ensamblador
Operacin
Multiplicacin
323353 LD (5333), A M(5333) ! A Transfiere el contenido del registro A a la posicin de memoria 5333 h No existe equivalente
L. Mquina L. Ensamblador Operacin
i80x86/8088 Tipo de
instruccin Transferencia A33353 MOV [5333], AX M(5333) AX Transfiere el contenido del registro AX (acumulador) a la posicin de memoria 5333 h F7E3 MUL BX DX,AX AX x BX Multiplica el contenido de los registros AX y BX, y deja el resultado en AX y DX (32 bits)
Estructura de Computadores I. T. I. de Gestin / Sistemas
Multiplicacin
Transparencia: 38 / 47
Cuenta con mltiples formatos cuyo cdigo mquina va desde un byte hasta seis bytes
Byte 2
R/M
Byte 3
Byte 4
DW Mod Reg
Especifica un operando como registro Especifica el otro operando como registro o memoria Determina el tamao de los operandos 0 para media palabra, 1 para palabra Determina el operando fuente y destino 0 operando reg origen, 1 operando reg destino
Cdigo de operacin
19
Transparencia: 39 / 47
El bit de direccin de registro (D): Si D = 1 tengo que REG = operando destino Si D = 0 tengo que REG = operando fuente El bit de tamao del dato (W): especifica si la operacin ser realizada sobre datos de media palabra o de una palabra: Si W = 0 los datos son de 8 bits ( 16 bits) Si W = 1 los datos son de 16 bits ( 32 bits)
Transparencia: 40 / 47
El segundo byte contiene los operandos (uno de ellos es un registro): REG se usa para identificar un registro
W=0 AL CL DL BL AH CH DH BH
W=1 AX CX DX BX SP BP SI DI
20
Transparencia: 41 / 47
El segundo byte contiene los operandos (continuacin): R/M se usa para identificar un registro o una posicin de memoria y depende del valor del campo MOD D8 es un desplazamiento de tamao media palabra (8 16 bits) y D16 es un desplazamiento de tamao palabra (16 bits 32 bits)
MOD = 11 CALCULO DE LA DIRECCION EFECTIVA MOD = 01 MOD = 10 [BX]+[SI]+D8 [BX]+[SI]+D16 [BX]+[DI]+D8 [BX]+[DI]+D16 [BP]+[SI]+D8 [BP]+[SI]+D16 [BP]+[DI]+D8 [BP]+[DI]+D16 [SI]+D8 [SI]+D16 [DI]+D8 [DI]+D16 [BP]+D8 [BP]+D16 [BX]+D8 [BX]+D16
Estructura de Computadores I. T. I. de Gestin / Sistemas
R/M W=0 W=1 R/M MOD = 00 000 AL AX 000 [BX]+[SI] 001 CL CX 001 [BX]+[DI] 010 DL DX 010 [BP]+[SI] 011 BL BX 011 [BP]+[DI] 100 AH SP 100 [SI] 101 CH BP 101 [DI] 110 DH SI 110 direccion directa 111 BH DI 111 [BX]
Departamento de Automtica rea de Arquitectura y Tecnologa de Computadores
Transparencia: 42 / 47
El bit D indica si el registro que seala el campo REG del segundo byte es el operando fuente o el destino. En este caso se codificar el registro BL en el campo REG del segundo byte; por tanto, D ser igual a 1 El bit W debe indicar una operacin de tamao byte. Por esta razn su valor ser 0
Estructura de Computadores I. T. I. de Gestin / Sistemas
21
Transparencia: 43 / 47
Transparencia: 44 / 47
22
Transparencia: 45 / 47
MOV BX, Dato: Byte1: C.O.: 1000 10 - D: 1 - W: 1 Byte2: MOD:00 - REG:011 - R/M:110 Cdigo en hexadecimal: 8B1E 0400h
Cod.Op. D W Mod Reg R/M Dir.DatoB 100010 1 1 00 011 110 Dir.DatoA 00000100 00000000 Estructura de Computadores I. T. I. de Gestin / Sistemas
Transparencia: 46 / 47
23
Transparencia: 47 / 47
Bibliografa
Estructura y diseo de computadores (Captulo 3) D. A. Patterson, J. L. Hennessy Ed. Revert Fundamentos de los Computadores (Captulos 6 y 13) Pedro de Miguel Anasagasti Ed. Paraninfo Arquitectura de Computadores (Captulo 3) Jos A. de Frutos, Rafael Rico Ed. Universidad de Alcal 8088-8086, 8087: Programacin en Ensamblador en entorno MS-DOS Miguel A. Rodrguez-Rosell Ed. Anaya Multimedia
Estructura de Computadores I. T. I. de Gestin / Sistemas
24