Tema 4: Lenguaje máquina - Lenguaje ensamblador

Documentos relacionados
Tema 4. Lenguaje máquina y lenguaje ensamblador

Arquitectura (Procesador familia 80 x 86 )

Conceptos de Arquitectura de Computadoras Curso 2015

Tema 5. Presentación de datos por pantalla

Tema 4. Lenguaje máquina y lenguaje ensamblador

Intel Arquitectura. Programación en Ensamblador Ing. Marcelo Tosini

Tema 5.1: Presentación de datos en pantalla

Tema 5: La pila, las macros y los procedimientos

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

El Diseño de un Lenguaje Máquina

1.2.- EL MICROPROCESADOR.

8.4. El software en los μprocesadores

Resumen de las instrucciones del 8086/8088

Relación de Problemas I

Ensamblador. Introducción. Dpto. Física y Arquitectura de Computadores. Universidad Miguel Hernandez

2 de septiembre de 2010 Hoja: 1 / 10. Solamente existe una opción válida en las preguntas de respuesta múltiple.

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Tema 3: ASCII y operaciones de desplazamiento y lógicas

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

Fecha de Introducción. Velocidad de reloj. Anchura del bus. Número de transistores. (microns) Memoria direccionable.

Tema 2. Presentación de datos por pantalla. La ROM-BIOS

INDICE Programa Entrada Unidad de control Unidad aritmética y lógica (ALU)

Tema 2: Lenguaje máquina. La interfaz entre el hardware y el software

Intel 8086 modelo básico (primera parte) Registros:

6-REGISTROS DEL 8086 Y DEL 80286

Clasificación del procesador según el número de referencias a memoria.

La arquitectura del 8086/8088

Práctica 2. Registros y posiciones de memoria

PRONTUARIO I. INFORMACIÓN GENERAL

Instrucciones de Control de Flujo y Usos de la Pila

Ejercicios del tema 4. El procesador

INTRODUCCIÓN. Interrupciones.

ARQUITECTURA DEL MICROPROCESADOR 8086

El nivel ISA (II)! Conjunto de Instrucciones

Trabajo Práctico Nro 3: Assembler

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Tema: Microprocesadores

Práctica 4 - Arquitectura CPU

Departamento de Sistemas e Informática

Instrucción De Salto Incondicional

Introducción a la arquitectura de computadores

Contenido. Conjunto de Instrucciones. Formato de la Instrucción. Instrucciones de 1 byte. Formato de la Instrucción 28/09/2011

3 - Arquitectura interna de un up

Práctica 3: El teclado del PC

Ciclos de máquina. Otro ejemplo: decremento de un registro par (donde rp = HL, DE, BC, SP) DCX rp

SISTEMAS BASADOS EN MICROPROCESADORES

Práctica 4. Lenguaje máquina y lenguaje ensamblador

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Arquitectura de Computadores. Apellidos, Nombre:

Arquitectura de Computadores II 8086 Parte II

MANEJO DEL MOUSE EN LENGUAJE C++

SISTEMAS OPERATIVOS Arquitectura de computadores

Arquitectura de Computadores II Clase #3

Arquitectura de Computadores

REPERTORIO DE INSTRUCCIONES DEL MICROPROCESADOR 8086

Pregunta correcta= 0,3 Pregunta no contestada= 0 Pregunta incorrecta (tipo test)= -0,15

ENSAMBLADOR DE ARCHIVO TASM MASM NASM GAS. Características de un Ensamblador de Archivo

Fig. 1: Tipos de datos que puede manejar el procesador

Construyendo Programas más Complejos

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

MANUAL DE PROGRAMACIÓN EN ENSAMBLADOR 8086

Manual de Programación X86 sobre plataforma FPGA.

La arquitectura CISCA

Estructura y Tecnología de Computadores. Módulo C. Arquitectura del procesador. Tema 4. Modos de direccionamiento y tipos de datos

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Asignatura: ASSEMBLER INF-153 LABORATORIO 1

PROGRAMA de Organización de Computadoras

Examen de Arquitectura de Computadores 2 22 de febrero del 2011

TEMA III: OPERACIONES CON LOS DATOS

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

MEMORIA EJERCICIO 1 EJERCICIO 2

ASIGNATURA: Estructura de Computadores

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Programación de Sistemas. Unidad 1. Programación de Sistemas y Arquitectura de una Computadora

Departamento de Ingeniería de Sistemas y Automática. STEP 7. Juego de instrucciones

Ingeniería en Sistemas. Sistemas Operativos. Trabajo Práctico: Repaso de Interrupciones, direccionamiento de memoria y registros del procesador.

Nombre del módulo: Instalación de Sistemas Microprocesados. Guía sobre Programación en Ensamblador usando Emulador (emu8086)

Análisis general de un Microprocesador

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

ESTRUCTURA FÍSICA DEL µp 8086

FUNCIONAMIENTO DEL ORDENADOR

Comparaciones en lenguaje ensamblador

Funcionamiento de la Pila (o stack)

SISTEMAS BASADOS EN MICROPROCESADORES

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

Instituto Tecnológico de Morelia

CICLOS DEL PROCESADOR

INDICE 1. Operación del Computador 2. Sistemas Numéricos 3. Álgebra de Boole y Circuitos Lógicos

Programas Residentes En Lenguaje Ensamblador

Tema 7: Sistemas de Entrada/Salida

Funcionamiento del 8086/8088

LECCIÓN 14: DISEÑO DE COMPUTADORES MEDIANTE MICROPROGRAMACION

Estructura de Computadores Tema 1. Introducción a los computadores

Iniciación del mouse El servicio utilizado es el 00, este servicio inicializa el controlador del mouse como sigue:

Arquitectura de Computadores

Curso SIMATIC S7 Nivel II

Este grupo es una continuación del anterior, incluye las siguientes instrucciones:

Estructura de Computadores

Transcripción:

Tema 4: Lenguaje máquina - Lenguaje ensamblador S Introducción S Modos de direccionamiento: S Juego de instrucciones: S Direccionamiento inmediato S Instrucciones de transferencia S Direccionamiento directo S Instrucciones de bifurcación S Direccionamiento relativo S Instrucciones aritméticas y lógicas S Direccionamiento indirecto S Instrucciones de comparación y de bit S Direccionamiento implícito S Instrucciones de desplazamiento S Ejemplo de hardware real: µp 80x86/88 S Instrucciones de entrada/salida S Segmentación de memoria en µp S Instrucciones de control 80x86/88 S Estructura de un programa ensamblador del S Modos de direccionamiento en el µp µp 80x86/88 80x86/88 S Formato de instrucciones: S Ejemplos de instrucciones S Formato de instrucciones en µp 80x86/88 1

Bibliografía S Estructura y diseño de computadores (Capítulo 3) D. A. Patterson, J. L. Hennessy Ed. Reverté S Fundamentos de los Computadores (Capítulos 6 y 13) Pedro de Miguel Anasagasti Ed. Paraninfo S (Capítulo 2) José M. Angulo Ed. Paraninfo S Arquitectura de Computadores (Capítulo 3) José A. de Frutos, Rafael Rico Ed. S 8088-8086, 8087: Programación en Ensamblador en entorno MS-DOS Miguel A. Rodríguez-Roselló Ed. Anaya Multimedia 2 2

Introducción (I) Instrucción: S Operación expresada mediante la codificación binaria de cadenas de 1's y 0's lenguaje máquina S El lenguaje máquina es distinto para cada computador. Excepto cuando existe compatibilidad entre familias Repertorio de instrucciones o juego de instrucciones: S Conjunto de órdenes que puede ejecutar un computador Lenguaje ensamblador: S Juego de instrucciones expresado con mnemónicos 3 3

Introducción (II) Programa: S Conjunto ordenado de instrucciones que resuelve una tarea S Secuencia básica de ejecución de una instrucción: S Lectura de memoria de la instrucción S Interpretación de la instrucción (por la unidad de control) S Ejecución de la instrucción (bajo las señales generadas por la unidad de control) 4 4

Introducción (III) S Las instrucciones se pueden clasificar según: S El juego de instrucciones: operaciones posibles y determinación de la siguiente instrucción a ejecutar S El modo de direccionamiento: ubicación de operandos S Formato de las instrucciones: codificación en binario 5 5

Juego de instrucciones (I) S El juego de instrucciones debe ser: S Capaz de realizar una tarea computable en tiempo finito S Eficaz (alta velocidad de cálculo) S Tipos de instrucciones: S Instrucciones de transferencia S Instrucciones de bifurcación S Instrucciones aritméticas y lógicas S Instrucciones de comparación y de bit S Instrucciones de desplazamiento S Instrucciones de entrada/salida S Instrucciones de control 6 6

Juego de instrucciones (II) Instrucciones de transferencia de datos S Copian en el operando destino la información del operando fuente sin modificar éste S No modifican el estado de los flags S Generalmente transfieren palabras pero pueden mover fracciones de ellas o bloques enteros S Las más frecuentes son (8088/80x86): S MOV transfiere el operando fuente al destino S PUSH transfiere el operando fuente a la pila S POP SP SP - 2 [SP] Operando fuente transfiere el último dato de la pila al operando destino Operando destino [SP] SP SP + 2 7 7

Juego de instrucciones (III) Instrucciones aritméticas y lógicas S Instrucciones aritméticas S ADD: suma sin acarreo S ADC: suma con acarreo S SUB: resta sin acarreo S SBB: resta con acarreo S MUL: multiplicación sin signo S IMUL: multiplicación con signo S DIV: división sin signo S IDIV: división con signo S INC: incrementar S DEC: decrementar S NEG:cambia de signo dejando el operando en C2 S Instrucciones lógicas S AND S NOT S OR S XOR 8 8

Juego de instrucciones (IV) Instrucciones de bifurcación (I) S Modifican la secuencia normal de ejecución de un programa S Actúan sobre el contador de programa (PC), controlan la secuencia de ejecución de un programa. Son un caso especial de transferencia, donde el operando destino es el PC S Clasificación: S Saltos Incondicionales: JMP etiqueta ( IP etiqueta ) Condicionales: J{condición} etiqueta Si condición, IP etiqueta. Si no, IP sig.instrucción S Llamadas a subrutinas Procedimientos: CALL (saltos con retorno) Interrupciones: INT Software BIOS Sistema operativo Hardware (E/S) S Saltos incondicionales: siempre se produce el salto S Saltos condicionales: se realiza el salto si se da la condición sobre los flags 9 9

Juego de instrucciones (V) Instrucciones de bifurcación (II) S Las condiciones más frecuentes admitidas por el 80x86/8088 son: Z -Cero G - Mayor que E - Igual [N] [E] L - Menor que [N] C - Acarreo A - Superior* S - Signo B - Inferior* O - Overflow (Desbordamiento) P - Paridad CXZ -CX=0 PE - Paridad par PO - Paridad impar *Se refieren a operandos sin signo 10 10

Juego de instrucciones (VI) Instrucciones de bifurcación (III) S Bucles: operación (decremento de contador) + salto condicional sobre la operación S LOOP Etiq realiza un bucle CX CX -1; Si CX 0 entonces IP Etiq, si no IP siguiente instrucción 11 11

Juego de instrucciones (VII) Instrucciones de bifurcación (IV) Subrutinas (I) Llamadas a subrutinas: salvan la posición de retorno Las instrucciones de salto a la subrutina y de regreso al programa principal van emparejadas LLAMADA A UNA SUBRUTINA S CALL Etiq: salto con retorno a una subrutina SP SP-2; [SP] IP; IP Etiq 1) Guardar en la pila la dirección de la siguiente instrucción a ejecutar SP SP 1234h Dirección de retorno 1234h 2) IP Dirección de la subrutina 12 12

Juego de instrucciones (VIII) Instrucciones de bifurcación (V) Subrutinas (II) RETORNO DE UNA SUBRUTINA S RET:retorno a la secuencia principal IP [SP]; SP SP+2 1) Extraer de la pila la dirección de la siguiente instrucción a ejecutar SP Dirección de retorno 1234h SP 1234h 2) IP Dirección de retorno de la subrutina 13 13

Juego de instrucciones (IX) Instrucciones de bifurcación (VI) Interrupciones (I) S Pueden ser: S Interrupciones hardware: Son generadas por los circuitos asociados al microprocesador en respuesta a algún evento como pulsar una tecla del teclado S 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. 14 14

Juego de instrucciones (X) Instrucciones de bifurcación (VII) Interrupciones (II) S Los pasos para llamar a una interrupción son: S Identificar la interrupción necesaria S Pasar los parámetros a la subrutina S Llamar a la interrupción S Las interrupciones implican una ruptura en la secuencia del programa S Se salta al código que da ese servicio y cuando se ha terminado, se vuelve a la ejecución del programa en curso S Las interrupciones salvaguardan los flags y los registros que emplean S MOV AH, 4Ch S INT 21h ; Indica al sistema operativo de la ; terminación del programa en curso 15 15

Juego de instrucciones (XI) Instrucciones de bifurcación (VIII) Interrupciones (III) LLAMADA A UNA INTERRUPCIÓN S INT:llamada a una rutina de interrupción (CALL + flags alapila) 1) Guardar en la pila los flags 2) Guardar en la pila la dirección de la siguiente instrucción a ejecutar SP 1234h SP Dirección de retorno Flags 1234h 3) IP Dirección de la interrupción 16 16

Juego de instrucciones (XII) Instrucciones de bifurcación (IX) Interrupciones (IV) REGRESO DE UNA INTERRUPCIÓN S IRET: retorno de la rutina de interrupción (RET + devuelve flags) 1) Guardar en la pila la dirección de la siguiente instrucción a ejecutar SP Dirección de retorno Flags SP 1234h 1234h 2) IP Dirección de la subrutina 3) Flags Flags anteriores a la llamada a la interupción 17 17

Juego de instrucciones (XIII) Instrucciones de comparación y de bit S Instrucciones de comparación S No almacenan el resultado, sólo modifican los flags S CMP: compara números (resta) S TEST: comparación lógica a nivel de bits (AND) S Instrucciones de bit S Tienen la función de modificar un solo bit o leer su estado. Son típicas en la configuración de los flags S TEST: comparación lógica a nivel de bits S CLI: clear flag de interrupción S STI: set flag de interrupción S CLC: clear flag de acarreo S STC: set flag de acarreo 18 18

Juego de instrucciones (XIV) Instrucciones de desplazamiento S SAR: S SAL: S SHR: S SHL: S ROR: S ROL: S RCR: S RCL: desplazamiento aritmético a la derecha desplazamiento aritmético a la izquierda desplazamiento lógico a la derecha desplazamiento lógico a la izquierda rotación a la derecha rotación a la izquierda rotación a la derecha a través del acarreo rotación a la izquierda a través del acarreo 19 19

Juego de instrucciones (XV) Instrucciones de entrada/salida Instrucciones de control Instrucciones de entrada/salida S IN: Transfiere información desde un puerto de entrada a un registro S OUT: Escribe información en un puerto de salida desde un registro Instrucciones de control S WAIT: hace esperar al procesador S HLT: detiene el procesador S NOP: no operación 20 20

Estructura de un programa ensamblador (I) Estructura de un programa en ensamblador: dosseg ; prepara los segmentos para trabajar con DOS.model small ; define el modo del ejecutable.stack 100h ; define el tamaño de la pila.data ; zona de definición de los datos definición de datos.code mov ax, @data ; inicialización de los datos en mov ds, ax ; el segmento de datos código del programa mov AH, 4Ch int 21h end ; terminación del programa y ; devolución del control a DOS ; fin de programa 21 21

Estructura de un programa ensamblador (II) 22 Suma dos números Num1 y Num2 y deja el resultado en Res: dosseg ; prepara los segmentos para trabajar con DOS.model small ; define el modo del ejecutable.stack 100h ; define la pila.data ; zona de definición de los datos Num1 DB 20h Num2 DB 33h Res DB?.code mov AX, @data ; inicialización de los datos en mov DS, AX ; el segmento de datos mov AL, Num1 add AL, Num2 mov Res, AL mov AH, 4Ch ; terminación del programa y int 21h ; devolución del control al DOS end ; fin de programa 22

Estructura de un programa ensamblador(iii) Escritura del texto Hola Mundo: dosseg ; prepara los segmentos para trabajar con DOS.model small ; define el modo del ejecutable.stack 100h ; define la pila.data ; zona de definición de los datos Texto DB Hola mundo$.code mov AX, @data ; inicialización de los datos en mov DS, AX ; el segmento de datos mov AH, 9 lea DX, Texto int 21h mov Ah, 4Ch ; terminación del programa y int 21h ; devolución del control a DOS end ; fin de programa 23 23

Modos de direccionamiento (I) S El modo de direccionamiento determina la ubicación de un operando: S En la propia instrucción S En un registro S En memoria principal 24 Modos de direccionamiento µp 8086/88 Ejemplos Inmediato Inmediato MOV AX, 15H Directo De registro De memoria De página base A registro (No existe) Directo MOV AX, BX MOV CX, ETIQUETA Relativo Indirecto Implícito Al contador de programa A un registro base A un registro índice A pila Solamente para saltos Relativo a base MOV BX+ARTÍCULO, AL Mediante índice MOV DL, VECTOR[SI] Mediante índice y base MOV AH, [BH][SI]+ARRAY A pila PUSH BX (No existe) Algunas instrucciones 24

Modos de direccionamiento (II) Direccionamiento inmediato S El operando se encuentra en la propia instrucción S Ejemplo: MOV CX, 0010h (Su código máquina es B9 10 00 h) S La manera de expresar el dato inmediato depende del formato de la máquina S Big endian S Little endian 25 25

Modos de direccionamiento (III) Direccionamiento directo S Es directo cuando la instrucción contiene el lugar donde se encuentra el operando S Según el lugar donde se encuentra el operando: S Direccionamiento directo a registro S Direccionamiento directo a memoria S Dirección completa (p. ej. Z80 sobre 64 Kb con 16 bits) S Dirección sobre una página del mapa de memoria; también se conoce como direccionamiento de página base (p. ej. 80x86/88). Ej. Mov CX, Etiqueta Banco de registros CX XXXX h Memoria principal Instrucción Etiqueta Banco de registros CX 1234 h Memoria principal Instrucción Etiqueta 1234 h 1234 h Antes de ejecutar la instrucción Después de ejecutar la instrucción 26 26

Modos de direccionamiento (IV) Direccionamiento relativo (I) S La instrucción indica el desplazamiento del operando con respecto a un puntero S La dirección efectiva es calculada por la unidad de control sumando, o restando, el desplazamiento al puntero de referencia que suele estar en un registro S Dependiendo del puntero se tienen diferentes modos de direccionamiento S Ejemplos: MEMORIA instrucción S MOV AL, [BX] S ADD CH, Numero[SI] S MOV BL, [SP+4] operando Desplaz. Dirección efectiva + registro Puntero 27 27

Modos de direccionamiento (V) Direccionamiento relativo (II) Dirección efectiva = Reg. Referencia + desplazamiento Modo de direccionamiento Registro de referencia Cálculo dirección efectiva Relativo a contador de programa Contador de programa (CP) DF = CP + desplazamiento Relativo a registro base Un registro base (Rb) DF = Rb + desplazamiento Relativo a registro índice Un registro índice (Ri) DF = Ri + desplazamiento Relativo a pila Registro de pila (SP) DF = SP + desplazamiento 28 28

Modos de direccionamiento (VI) Direccionamiento indirecto S La posición indicada por la instrucción no es el operando sino la dirección de memoria en la que se encuentra, por lo que se necesita un acceso adicional a memoria S Es posible que se realicen múltiples niveles de indirección S Su utilidad más común es la de acceso a diversas informaciones mediante tablas de punteros S Ejemplo: S MOVAX,[[100]] MEMORIA Dirección operando instrucción dirección 29 29

Modos de direccionamiento (VII) Direccionamiento implícito S En la instrucción no se indica explícitamente el lugar donde se encuentra el operando S Requiere que el programador conozca con que operandos se está trabajando S Ejemplos: S MUL BX AX x BX DX,AX donde AX y DX son operandos implícitos S RET realiza las siguientes operaciones: S IP [SP] S SP SP +2 30 30

Ejemplo de hardware real: µp 80x86/88 (I) Registros de datos Cola de instrucciones AX BX CX DX AH BH CH DH AL BL CL DL L gica de control Bus multiplexado Direcci n/dato (20 patillas) ALU PSW Punteros SP BP SI DI IP Registros de segmentos CS SS DS ES 2 Control (16 patillas) +5V Tierra Reloj 31 31

Ejemplo de hardware real: µp 80x86/88 (II) Segmentación de memoria en µp 80x86/88 (I) S El 80x86/88 se puede direccionar 1MB con 20 líneas de dirección pero sus registros internos tan solo son de 16 bits S Solución: segmentación de memoria S Las direcciones se generan combinando una base y un desplazamiento, cada uno de 16 bits: base x 10h + desplazamiento S Cada base genera una página o segmento de 64 Kb con funciones especificas: Base Registro de segmento CS SS DS ES Función Contiene el código ejecutable Se reserva para la pila (stack) Contiene los datos Segmento extra de datos 32 32

Ejemplo de hardware real: µp 80x86/88 (III) Segmentación de memoria en µp 80x86/88 (II) Banco de registros: S Registros de datos: S AX (AH, AL) S BX (BH, BL) S CX (CH, CL) S DX (DH, DL) S Punteros: S Registros de segmentos S SP - Puntero de pila SS - Segmento de pila S BP - Puntero base de pila S SI - Registro índice DS - Segmento de datos S DI - Registro índice S IP - Contador de programa CS - Segmento de código ES - Segmento extra de datos Dirección Física = Segmento : Dirección Efectiva 33 33

Ejemplo de hardware real: µp 80x86/88 (IV) Segmentación de memoria en µp 80x86/88 (III) AX BX CX DX Registros de datos AH BH CH DH AL BL CL DL L gica de control Cola de instrucciones La segmentación se aplica ÚNICAMENTE al acceder a Memoria Principal Direcci n/dato (20 patillas) Memoria Principal ALU PSW Punteros SP BP SI DI IP Registros de segmentos CS SS DS ES 2 Control (16 patillas) +5V Tierra Reloj 34 34

Ejemplo de hardware real: µp 80x86/88 (V) Modos de direccionamiento en el µp 80x86/88 (I) Direccionamiento directo en el µp 80x86/88 S Ejemplo: MOV CX, ETIQUETA DIRECCIÓN MEMORIA INSTRUCCIÓN DIRECCIÓN MEMORIA INSTRUCCIÓN 8088/86 01000 01001 IP CS DS 0000 0100 0200 01002 01003 01004 SS ES 8B 0E 34 12 XX MOV CX,ETIQUETA ETIQUETA=1234H sig. inst. IP CS DS SS ES 8088/86 0004 0100 0200 01000 01001 01002 01003 01004 8B 0E 34 12 XX MOV CX,ETIQUETA sig. inst. AX BX CX DX XXXX AX BX CX DX BEED SP BP SI DI 03234 03235 ED BE operando fuente SP BP SI DI 03234 03235 ED BE Antes de ejecutar la instrucción RI 0E 8B 12 34 Después de ejecutar la instrucción 35 35

Ejemplo de hardware real: µp 80x86/88 (VI) Modos de direccionamiento en el µp 80x86/88 (II) Direccionamiento relativo a base µp 80x86/88 S Ejemplo: MOV [BX]+ARTÍCULO, AL DIRECCIÓN MEMORIA INSTRUCCIÓN DIRECCIÓN MEMORIA INSTRUCCIÓN 8086/88 01000 01001 IP CS DS 0000 0100 0500 01002 01003 01004 SS ES 88 87 00 50 XX ARTICULO=5000H sig. inst. IP CS DS SS ES 8086/88 0004 0100 0500 01000 01001 01002 01003 01004 88 87 00 50 XX sig. inst. AX BX CX DX XX FC 1000 AX BX CX DX XX FC 1000 SP BP SI DI 0B000 0B001 XX XX operando destino SP BP SI DI 0B000 0B001 FC XX Antes de ejecutar la instrucción RI 87 88 50 00 Después de ejecutar la instrucción 36 36

Ejemplo de hardware real: µp 80x86/88 (VII) Modos de direccionamiento en el µp 80x86/88 (III) Direccionamiento mediante índice en µp80x86/88 S Ejemplo: MOV DL, VECTOR[SI] DIRECCIÓN MEMORIA INSTRUCCIÓN DIRECCIÓN MEMORIA INSTRUCCIÓN 8086/88 01000 01001 IP CS DS 0000 0100 B000 01002 01003 01004 SS ES 8A 94 00 A0 XX VECTOR=A000H sig. inst. IP CS DS SS ES 8086/88 0004 0100 B000 01000 01001 01002 01003 01004 8A 94 00 A0 XX sig. inst. AX BX CX DX XX XX AX BX CX DX XX ED SP BP SI DI 0000 BA000 ED operando fuente SP BP SI DI 0000 BA000 ED Antes de ejecutar la instrucción RI 94 8A A0 00 Después de ejecutar la instrucción 37 37

Ejemplo de hardware real: µp 80x86/88 (VIII) Modos de direccionamiento en el µp 80x86/88 (IV) Direccionamiento mediante índice y base µp80x86/88 S Ejemplo: MOV AH, [BX] [SI]+ARRAY DIRECCIÓN MEMORIA INSTRUCCIÓN DIRECCIÓN MEMORIA INSTRUCCIÓN 8088/86 01000 01001 IP CS DS 0000 0100 0200 01002 01003 01004 SS ES 8A 20 34 12 XX ARRAY=1234H sig. inst. IP CS DS SS ES 8088/86 0004 0100 0200 01000 01001 01002 01003 01004 8A 20 34 12 XX sig. inst. AX BX CX DX XX XX 1000 AX BX CX DX ED XX 1000 SP BP SI DI 2000 06234 06235 ED XX operando fuente SP BP SI DI 2000 06234 ED Antes de ejecutar la instrucción RI 20 8A 12 34 Después de ejecutar la instrucción 38 38

Ejemplo de hardware real: µp 80x86/88 (IX) Modos de direccionamiento en el µp 80x86/88 Modo de direccionamiento Ejemplo Cálculo dirección efectiva Directo MOV CL, Etiqueta DF = DS x 10h + Etiqueta Relativo a base MOV AH, [BX]+ Elemento DF = DS x 10h + BX + Elemento Mediante índice MOV DL, Elemento[SI] DF = DS x 10h + SI + Elemento Mediante índice y base ADD CH, Elemento[BX][SI] DF = DS x 10h + BX + SI + Elemento La segmentación solamente se emplea cuando uno de los operandos se encuentra en memoria En el caso de que se trate de la dirección de la siguiente instrucción 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 B. Registros CS = 0100h DS = 0200h SS = 0300h BX = 1234h SI = 0010h IP = 0025h SP = 0200h Num= 1500h EJEMPLOS S Dirección física de memoria de la instrucción a ejecutar: DF = CS x 10h + IP = 0100h x 10h + 0025h = 01025h S Dirección física de memoria del operando fuente MOV AL, Num[SI] DF = DS x 10h + Num + SI = 0200h x 10h + 1500 h + 0010h = 03710h S Dirección física en la que se encuentra la cabecera de la pila DF = SS x 10h + SP = 0300h x 10h + 0200h = 3200h 39 39

Formato de las instrucciones (I) S Es la representación en binario de cada una de las instrucciones S Cada instrucción contiene explicitamente o implicitamente toda la información que necesita para ejecutarse: S Código de operación, indica a la UC el tipo de operación, aritmética, lógica, de transferencia, salto, etc. S El valor o la posición donde se hallan los operandos S El lugar donde se tiene que depositar el resultado S Dirección de la siguiente instrucción aejecutar Cod. operación Operandos Resultado Dir. sig. instrucc. 40 40

Formato de instrucciones (II) S Características generales: S Las instrucciones se "encajan" en alguno de los formatos disponibles S Los formatos son sistemáticos (campos de longitud y posición fijas) S El primero de los campos es el código de operación S Siempre que se pueda, se supone información implícita para acortar: S Siguiente instrucción en la siguiente posición de memoria, salvo bifurcaciones S En vez de usar la operación pura se asignan diferentes códigos de operación para diferentes modos de direccionamiento S La ubicación del resultado coincide con el operando destino S Según esto, un formato típico cuenta con esta información: Cod. operación Operandos 41 41

Formato de instrucciones (III) Ejemplos de instrucciones S Z80 S 80x86/8088 Tipo de instrucción Transferencia Multiplicación Tipo de instrucción Transferencia Multiplicación L. Máquina L. Ensamblador Operación 323353 LD (5333), A M(5333) A Transfiere el contenido del registro A a la posición de memoria 5333 h - - - No existe equivalente L. Máquina L. Ensamblador Operación A33353 MOV [5333], AX M(5333) AX Transfiere el contenido del registro AX (acumulador) a la posición 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) 42 42

Formato de instrucciones (IV) Formato de instrucciones µp 80x86/8088 (I) S Cuenta con dos formatos: Formato general: Byte 1 Byte 2 Byte 3 Byte 4 Formato especial: Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Código DW Mod Reg R/M Código Desplazamiento o dato inmediato Desplazamiento o dato inmediato Código de operación 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 Código de operación Campo de extensión 43 43

Formato de instrucciones (V) Formato de instrucciones µp 80x86/8088 (II) Formato general: S El primer byte contiene: S Código de operación S El bit de dirección de registro (D): S Si D = 1 tengo que REG = operando destino S Si D = 0 tengo que REG = operando fuente S El bit de tamaño del dato (W): especifica si la operación será realizada sobre datos de media palabra o de una palabra: S Si W = 0 los datos son de 8 bits (ó 16 bits) S SiW=1losdatossonde16bits(ó32bits) 44 44

Formato de instrucciones (VI) Formato de instrucciones µp 80x86/8088 (III) S El segundo byte contiene los operandos (uno de ellos es un registro): S REG se usa para identificar un registro: REG W=0 W=1 000 AL AX 001 CL CX 010 DL DX 011 BL BX 100 AH SP 101 CH BP 110 DH SI S MOD indica el modo de direccionamiento según: 111 BH DI MOD Función: 00 01 10 11 Modo memoria sin desplazamiento Modo memoria con desplazamiento de media palabra Modo memoria con desplazamiento de una palabra Modo registro 45 45

Formato de instrucciones (VII) Formato de instrucciones µp 80x86/8088 (IV) MOD = 11 CALCULO DE LA DIRECCION EFECTIVA R/M W=0 W=1 R/M MOD = 00 MOD = 01 MOD = 10 000 001 010 011 100 101 110 111 AL CL DL BL AH CH DH BH AX CX DX BX SP BP SI DI 000 001 010 011 100 101 110 111 [BX]+[SI] [BX]+[DI] [BP]+[SI] [BP]+[DI] [SI] [DI] direccion directa [BX] [BX]+[SI]+D8 [BX]+[DI]+D8 [BP]+[SI]+D8 [BP]+[DI]+D8 [SI]+D8 [DI]+D8 [BP]+D8 [BX]+D8 [BX]+[SI]+D16 [BX]+[DI]+D16 [BP]+[SI]+D16 [BP]+[DI]+D16 [SI]+D16 [DI]+D16 [BP]+D16 [BX]+D16 S Donde D8 es un desplazamiento de tamaño media palabra (8 ó 16 bits) y D16 es un desplazamiento de tamaño palabra (16 bits ó 32 bits) 46 46

Formato de instrucciones (VIII) Ejemplos de formatos µp 80x86/8088 (I) S La instrucción MOV BL,AL "mueve el byte contenido en el registro fuente AL al registro destino BL S Solución: S En el primer byte los primeros 6 bits especifican la operación de mover y, por tanto, deben ser: CODIGO DE OPERACION = 100010 2 S 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 S El bit W debe indicar una operación de tamaño byte. Por esta razón su valor será 0 47 47

Formato de instrucciones (IX) Ejemplos de formatos µp 80x86/8088 (II) S El resultado será el siguiente: S 1 er byte = 1000 1010 2 =8A 16 S En el segundo byte, REG indica el operando es BL. Su código correspondiente es: S REG = 011 S 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: S MOD = 11 R/M = 000 S Por tanto, el segundo byte completo es: S 2º byte = 1101 1000 2 =D8 16 S Y el código hexadecimal completo para la instrucción es: MOV BL,AL = 8A D8 16 48 48

Formato de instrucciones (X) Ejemplos de formatos µp 80x86/8088 (III) S 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 80x86/88: S 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 S 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.Dato B Dir.Dato A 100010 0 1 00 011 110 00000100 00000000 S 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.Dato B Dir.Dato A 100010 1 1 00 011 110 00000100 00000000 49 49

Formato de instrucciones (XI) Ejemplos de formatos µp 80x86/8088 (IV) S 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 D.Cadena B D.Cadena A 100010 1 0 10 001 100 00000000 00000000 50 50