instrucciones - Arquitectura y Tecnología de Computadores
Transcripción
instrucciones - Arquitectura y Tecnología de Computadores
INSTRUCCIONES LA ENERGIA DE LA MAQUINA Fundamentos de Computadores Capítulo segundo Departamento de Automática. Area de Arquitectura y Tecnología de Computadores. INTRODUCCION • Computador: se limita a ejecutar las órdenes que recibe. • Ordenes = INSTRUCCIONES – Se expresan mediante un conjunto de 1 y 0. • Repertorio de Instrucciones: conjunto de órdenes que puede interpretar y ejecutar un computador. – Suelen ser sencillas operaciones de tipo aritmético o lógico, realizadas sobre uno o dos operandos para obtener un resultado. Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 2 Características de la instrucciones • Una instrucción debe contener la siguiente información para ejecutarse: – Tipo de operación a realizar – El valor o la posición donde se hallan los operandos – El lugar donde se tiene que depositar el resultado • Formato de una instrucción: – Código de operación: indica a la UC el tipo de operación: (instrucción aritmética, instrucción lógica, instrucción de transferencia, instrucción de salto) – Operando 1 y 2: indican dónde se encuentran los operandos – Resultado: indica el lugar donde hay que depositar el resultado • Modos de direccionamiento: – Modo en que se expresa el valor o el lugar donde residen los operandos y el resultado (Ejs. Directo a memoria, por registro, inmediato) Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 3 Modos de direccionamiento en el µP 8086/88 (I) µP 8086/88 Inmediato Directo a registro Directo Relativo a base Mediante índice Mediante índice y base Implícito Ejemplos MOV AX, 15H MOV AX, BX MOV CX, ETIQUETA MOV BX+ARTÍCULO, AL MOV DL, VECTOR[SI] MOV AH, [BX][SI]+ARRAY Algunas instrucciones Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 4 Modos de direccionamiento en el µP 8086/88 (II) Segmentación de memoria (I) • • • El 8088/86 puede direccionar 1MB con 20 líneas de dirección pero sus registros internos tan solo son de 16 bits Solución Ð segmentación de memoria Las direcciones se generan combinando una base y un desplazamiento, cada uno de 16 bits: – base x 16 + desplazamiento = base x 10h + desplazamiento • Cada base genera una página o segmento de 64 Kb con funciones especificas: Base Registro de segmento Función CS DS SS ES Contiene el código ejecutable Contiene los datos Se reserva para la pila o stack Segmento extra de datos Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 5 Modos de direccionamiento en el µP 8086/88 (III) Segmentación de memoria (II) Banco de registros: • Registros de datos: – – – – • Punteros: – – – – – • AX (AH, AL) BX (BH, BL) CX (CH, CL) DX (DH, DL) SP BP SI DI IP - Puntero de pila - Puntero base de pila - Registro índice - Registro índice - Contador de programa Registros de segmentos SS - Segmento de pila DS - Segmento de datos CS - Segmento de código ES - Segmento extra de datos Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 6 Modos de direccionamiento en el µP 8086/88 (IV) Direccionamiento inmediato • Ejemplo: MOV AL, 15H DIRECCIÓN INSTRUCCIÓN DIRECCIÓN 8088/86 IP 0000 CS 0100 01000 80 01001 15 01002 XX AX BX CX XX 01000 80 sig. inst. 01003 e m IP 0002 CS 0100 01003 ES AX 15 BX CX DX SP r SP i SI DI sig. inst. SS o SI 01002 XX DS DX BP MOV AL,15h 01001 15 M ES 8088/86 MOV AL,15h DS SS INSTRUCCIÓN BP DI a Antes de ejecutar la instrucción Después de ejecutar la instrucción Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 7 Modos de direccionamiento en el µP 8086/88 (V) Direccionamiento a registro • Ejemplo: MOV AX, BX DIRECCIÓN INSTRUCCIÓN DIRECCIÓN 8088/86 01000 8B IP CS 0000 0100 MOV AX,BX 01000 8B 01003 M ES XXXX BX 7FA6 DX SP BP SI DI IP 0002 CS 0100 01002 XX sig. inst. 01003 DS SS AX CX MOV AX,BX 01001 C3 sig. inst. DS SS 8088/86 01001 C3 01002 XX INSTRUCCIÓN e ES m AX o CX r i a 7FA6 BX 7FA6 DX SP BP SI DI Antes de ejecutar la instrucción Después de ejecutar la instrucción Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 8 Modos de direccionamiento en el µP 8086/88 (VI) Direccionamiento directo • Ejemplo: MOV CX, ETIQUETA DIRECCIÓN INSTRUCCIÓN DIRECCIÓN INSTRUCCIÓ 8088/86 01000 8B MOV CX,ETIQUETA 01001 0E ETIQUETA=1234H IP 0000 CS 0100 01003 12 DS 0200 01004 XX 01002 8088/86 01000 8B 01001 0E 34 IP 0004 CS 0100 01003 12 SS DS 0200 01004 XX ES SS sig. inst. AX BX CX BEED DX o SP r operando fuenteBP SI DI i 03234 ED a 03235 BE BP SI DI 03234 ED 03235 BE m DX SP sig. inst. e AX CX XXXX 34 M ES BX 01002 MOV CX ,ETIQUETA Antes de ejecutar la instrucción Después de ejecutar la instrucción Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 9 Modos de direccionamiento en el µP 8086/88 (VII) Direccionamiento relativo a base • Ejemplo: MOV [BX]+ARTÍCULO, AL DIRECCIÓN DIRECCIÓN INSTRUCCIÓN 8086/88 8086/88 IP 0000 CS DS 87 0100 01003 50 0500 01004 XX AX XX FC BX 1000 SP 01001 00 ES DX 88 01002 SS CX 01000 ARTICULO=5000H sig. inst. DI CS 0100 DS 0500 SS M e m o r i a ES AX XX FC BX 1000 CX DX SP 88 01001 87 01002 00 01003 50 01004 XX sig. inst. M e m o r i a BP BP SI IP 0004 01000 0B000 XX operando destino SI 0B000 FC DI 0B001 XX 0B001 XX Antes de ejecutar la instrucción Después de ejecutar la instrucción Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 10 Modos de direccionamiento en el µP 8086/88 (VIII) Direccionamiento mediante índice • Ejemplo: MOV DL, VECTOR[SI] DIRECCIÓN INSTRUCCIÓN DIRECCIÓN INSTRUCCIÓN 8086/88 01000 8A IP 0000 01001 94 01002 00 0100 01003 A0 DS B000 01004 XX CS SS ES AX BX CX DX XX XX SP VECTOR=A000H sig. inst. M e m o r i a DI BA000 ED 94 01002 00 CS 0100 01003 A0 DS B000 01004 XX ES AX BX CX DX XX ED operando fuente 01001 IP SP 0000 01000 8A 0004 SS BP SI 8086/88 BP SI 0000 DI sig. inst. M e m o r i a BA000 ED Antes de ejecutar la instrucción Después de ejecutar la instrucción Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 11 Modos de direccionamiento en el µP 8086/88 (IX) Direccionamiento mediante índice y base • Ejemplo: MOV AH, [BX] [SI]+ARRAY DIRECCIÓN INSTRUCCIÓN DIRECCIÓN INSTRUCCIÓN 8088/86 01000 8A IP 0000 01001 20 01002 34 0100 01003 12 DS 0200 01004 XX CS SS ES AX XX XX BX 1000 CX DX SP ARRAY=1234H 8088/86 sig. inst. M e m o r i a DI 01001 20 01002 34 IP 0004 CS 0100 01003 12 DS 0200 01004 XX ES AX ED XX BX 1000 CX DX SP 2000 06234 ED 06235 XX Operando fuente sig. inst. M e m o r i a SS BP SI 01000 8A BP SI DI 2000 06234 ED Antes de ejecutar la instrucción Después de ejecutar la instrucción Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 12 Formato de instrucciones en el 8086/8088 (I) Byte 1 Código op. Byte 2 Byte 3 Byte 4 Mod Reg R/M DW Desplazamiento o dato inmediato Reg Mod R/M Código de operación W Especifica un operando como registro Especifica el otro operando como registro o memoria Determina el tamaño de los operandos Determina el operando fuente y destino D Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 13 Formato de instrucciones en el 8086/8088 (II) • Funciones de los campos del formato general: – El primer byte contiene 3 clases de información: • Código de operación: los 6 primeros bits contienen el código de la operación a realizar • El bit de dirección de registro (D): especifica si el operando dado por el campo de registro operando REG en el segundo byte es el operando fuente o destino: – Si D = 1 tengo que REG = operando destino – Si D = 0 tengo que REG = operando fuente • El bit de tamaño del dato (W): especifica si la operación será realizada sobre datos de 8 o de 16 bits: – Si W = 0 los datos son de 8 bits – Si W = 1 los datos son de 16 bits Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 14 Formato de instrucciones en el 8086/8088 (III) – El segundo byte contiene los operandos (uno de ellos siempre es un registro): • El segundo byte contiene 3 campos. El campo de modo (MOD), el campo de registro/memoria (R/M) y el campo de registro operando (REG) • El campo de 3 bits REG se usa para identificar un registro según la tabla siguiente: REG W=0 W=1 000 001 010 011 100 101 110 111 AL CL DL BL AH CH DH BH AX CX DX BX SP BP SI DI Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 15 Formato de instrucciones en el 8086/8088 (IV) • El campo MOD junto con R/M indican quién es el otro operando Puede ser un registro o una posición de memoria • En el segundo caso estos 2 campos especificarán también cómo se direcciona dicha posición de memoria. Obteniéndose la siguiente codificación: MOD Función: 00 01 10 11 Modo memoria sin desplazamiento* Modo memoria con desplazamiento de 8 b Modo memoria con desplazamiento de 16 b Modo registro * excepto cuando R/M es 110 Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 16 Ejemplos de formatos en el 8086/88 (I) • La instrucción MOV BL,AL "mueve el byte contenido en el registro fuente AL al registro destino BL". Usando el formato general para las instrucciones del 8088 escribir el código máquina de la instrucción. El código de operación es 1000102 – Solución: En el primer byte los primeros 6 bits especifican la operación de mover y, por tanto, deben ser: CODIGO DE OPERACION = 1000102 – El bit D indica si el registro que señala 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 operación de tamaño byte. Por esta razón su valor también será 0 Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 17 Ejemplos de formatos en el 8086/88 (II) • El resultado será el siguiente: – 1er byte = 1000 10102 = 8A16 • En el segundo byte, REG indica el operando es BL. Su código correspondiente es: – REG = 011 • Como el segundo operando es también un registro tengo que MOD debe valer 11. El campo R/M debe especificar que el registro es AL y su códificación es 000. Esto da: – MOD = 11 • R/M = 000 Por tanto, el segundo byte completo es: – 2º byte = 1101 10002 = D816 • Y el código hexadecimal completo para la instrucción es: MOV BL,AL = 8A D816 Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 18 Ejemplos de formatos en el 8086/88 (III) • Supongamos que se dispone de las siguientes variables, definidas en el segmento de datos: Cadena DB 0, 0, 0, 0 Dato DW 0 Nota: Cadena empieza en la posición de memoria 0h del DS y Dato en la posición 4h Se desea saber cuál es el código en lenguaje máquina de las siguientes instrucciones del 8086/88: • MOV AL, BL Byte1: C.O.: 1000 10 - D: 1 - W: 0 Byte2: MOD:11 - REG:000 - R/M:011 Código en hexadecimal: 8AC3 h Cod.Op. D W Mod Reg R/M 100010 1 0 11 000 011 Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 19 Ejemplos de formatos en el 8086/88 (IV) MOV Dato, BX Byte1: C.O.: 1000 10 - D: 0 - W: 1 Byte2: MOD:00 - REG:011 - R/M:110 Código en hexadecimal: 891E 0400h Cod.Op. D W Mod Reg R/M Dir.DatoB Dir.DatoA 100010 0 1 00 011 110 00000100 00000000 MOV BX, Dato Byte1: C.O.: 1000 10 - D: 1 - W: 1 Byte2: MOD:00 - REG:011 - R/M:110 Código en hexadecimal: 8B1E 0400h Cod.Op. D W Mod Reg R/M Dir.DatoB Dir.DatoA 100010 1 1 00 011 110 00000100 00000000 Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 20 Ejemplos de formatos en el 8086/88 (V) • MOV CL, Cadena[SI] Byte1: C.O.: 1000 10 - D: 1 - W: 0 Byte2: MOD:10 - REG:001 - R/M:100 Código hexadecimal: 8A8C 0000h Cod.Op. D W Mod Reg R/M 100010 1 0 10 001 100 D.CadenaB D.CadenaA 00000000 00000000 Fundamentos de Computadores. Ingeniería de Telecomunicación. Departamento de Automática. ATC 21