1 / 39

IPN Escuela Superior de Cómputo

IPN Escuela Superior de Cómputo. MICROPROCESADORES II. CONTENIDO:. I. INTRODUCCION 1.1. Importancia del lenguaje ensamblador 1.2. Descripción y características del lenguaje ensamblador 1.3. Modelos de arquitectura de computadoras

nanette
Download Presentation

IPN Escuela Superior de Cómputo

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. IPNEscuela Superior de Cómputo MICROPROCESADORES II

  2. CONTENIDO: I. INTRODUCCION 1.1. Importancia del lenguaje ensamblador 1.2. Descripción y características del lenguaje ensamblador 1.3. Modelos de arquitectura de computadoras 1.4. Características de los microprocesadores de la familia x86 II. EL MICROPROCESADOR Y SU ARQUITECTURA 2.1. Descripción de la unidad procesadora de una microprocesador de la familia x86 2.2. Registros del microprocesador 2.3. Modo Real y Modo Protegido del Microprocesador 2.4 Segmentación 2.5. Modos de direccionamiento de datos III. PROGRAMACION EN ENSAMBLADOR 3.1. Requerimientos para la programación en ensamblador 3.2. Formato de un programa en ensamblador 3.3. Software TASM y MASM 3.4. Creación de un programa en ensamblador

  3. CONTENIDO: IV. CONJUNTO DE INSTRUCCIONES EN ENSAMBLADOR 4.1. Instrucciones para movimiento de datos 4.2. Instrucciones aritméticas y lógicas 4.3. Instrucciones de entrada/salida 4.4. Instrucciones control de programa V. MACROS Y PROCEDIMIENTOS 5.1. Definición de procedimiento 5.2. Sintaxis de un procedimient0 5.3. Definición de una macro 5.4. Sintaxis de una macro 5.5. Bibliotecas de macros 6. INTERRUPCIONES 6.1. Definición de interrupción 6.2. Clasificación 6.3. Funcionamiento del mecanismo de interrupciones 6.4. Interrupciones más comunes

  4. CONTENIDO: VII. MANEJO DE ARCHIVOS 7.1. Manejando archivos con el método FCB 7.2. Manejando archivos con canales de comunicación VIII. PROGRAMACION DE PERIFERICOS 8.1. Puerto Paralelo 8.2. Puerto Serial 8.3. TIMER 8.4. Controlador de Interrupciones 8.5. Coprocesador matemático 8.6. Modo gráfico y ratón IX. PROGRAMACION AVANZADA 9.1. Interfaz del lenguaje “C” con ensamblador 9.2. Programación de ensamblador en Windows

  5. I. INTRODUCCION : 1.1. Importancia del lenguaje ensamblador 1.2. Descripción y características del lenguaje ensamblador 1.3. Modelos de arquitectura de computadoras 1.4. Características de los microproc. de la familia x86

  6. 1.1, 1.2 El ensamblador • Existen varias razones que justifican el uso del ensamblador en lugar de otros lenguajes: • El ensamblador brinda la oportunidad de conocer más a fondo la operación de su PC. • Se conserva el control total las tareas que realiza la PC, siempre y cuando ésta sea físicamente capaz de hacerlo. • Los programas en ensamblador son más rápidos, más compactos y tienen mayor capacidad que los creados en otros lenguajes. • Permite optimizar al máximo los programas.

  7. 1.3 Arquitecturas de computadoras • RISC vs. CISC • RISC. • CISC. • Hardvard vs. Princeton (Von Neuman): • Hardvard. • Von Neuman. • Otras clasificación, (Flynn): • MIMD, MISD, SIMD y SISD.

  8. 1.3 Arquitecturas de computadoras La arquitectura Harvard, separa la memoria de datos y la memoria de programa, y se accede a ellas mediante buses distintos. La arquitectura Von Neuman trata de la misma forma los datos que las instrucciones.

  9. 1.4 Características micros x86

  10. 1.4 Características micros x86

  11. II. EL MICROPROCESADOR Y SU ARQUITECTURA 2.1. Descripción de la unidad procesadora de una microprocesador de la familia x86 2.2. Registros del microprocesador 2.3. Modo Real y Modo Protegido del Microprocesador 2.4. Segmentación 2.5 Modos de direccionamiento de datos

  12. Bus de Direcciones CPU 80X86 Puertos E/S Memoria RAM Bus de Datos Bus de Control 2.1. El Microp. 80X86 y su Arquitectura

  13. -Registros: Propósito general, propósito específico y de segmento. -Los registros sombredos existen despues del 80386. -FS y GS no tienen nombres asociados. 2.2 Registros

  14. 2.2 Registros • Registro: Conjunto de flip-flops capaz de almacenar, y en algunos casos modificar, información binaria. • Dentro de todo CPU existe un conjunto de registros. • Algunos tienen un uso específico, otros son de uso general. • Los registros de uso general normalmente se utilizan para guardar datos y resultados intermedios.

  15. 2.2 Registros • Desde el punto de vista del programador, es muy importante conocer el conjunto de registros internos de un procesador y su uso, cuando se programa en bajo nivel. • Esto se debe a que muchas de las instrucciones de lenguaje máquina suponen que los datos están en alguno de los registros o almacenan el resultado en alguno de los registros internos.

  16. EAX 32 bits AH AL 16 bits AX 2.2 Registros de los procesadores 80X86 • Registros de Uso General: • EAX: Acumulador • EBX: Base • ECX: Contador • EDX: Datos. • Estos registros pueden guardar datos de 32, 16 u 8 bits.

  17. ESP 32 bits SP 16 bits 2.2 Registros de los procesadores 80X86 • ESP: Stack Pointer (Apuntador de Pila) • EBP: Base Pointer (Apuntador Base) • ESI: Source Index (Indice Fuente u Origen) • EDI: Destination Index (Indice Destino) • Estos registros pueden almacenar datos de 32 o 16 bits.

  18. . . . . . . . . OF DF IF SF ZF CF 2.2 Registro de Banderas • Conjunto de bits que nos dan información sobre el estado del procesador y sobre el resultado de la última operación efectuada. • Es el único registro accesible a nivel de bits. • Algunos de estos bits son: • CF: Carry flag - ZF: Zero flag • SF: Sign flag - OF: Overflow flag • IF: Interrupt flag - DF: Direction flag

  19. 2.2 Registros de los procesadores • Registros de Segmento • CS: Code Segment (Segmento de Código) • DS: Data Segment (Segmento de Datos) • SS: Stack Segment (Segmento de Pila) • ES: Extra Segment (Segmento Extra) • FS: Extra Segment (Segmento Extra) • GS: Extra Segment (Segmento Extra) • Son registros de 16 bits. • Se utilizan para generar las direcciones que el procesador envía por el bus de direcciones.

  20. 2.3 Modo real y protegido • Los microprocesadores 80286 y posteriores operan tanto en modo real como en modo protegido. • Sólo el 8086 y 8088 operan en modo real. • La operación en modo real permite direccionar a segmentos de 64 KB de memoria. • En el modo real de operación, el direccionamiento a memoria se hace en forma segmentada. Una dirección segmentada tiene 2 partes: Segmento : Desplazamiento • El registro CS trabaja en conjunto con el registro IP (Apuntador de Instrucción) para generar las direcciones hacia el programa.

  21. mts 100 200 300 400 500 2.4 Segmentación • Técnica utilizada en los procesadores Intel 8086/8088 para generar direcciones de 20 bits usando registros de 16 bits. • Para ilustrar esta técnica, suponga que se desea ubicar la posición de una persona a partir de un punto de referencia, pero utilizando solamente números de 2 dígitos decimales.

  22. mts 100 200 300 400 500 2.4 Segmentación • Esto se puede realizar si se hace lo siguiente: • Se divide la recta en bloques de 100 metros cada uno. • Se utilizan dos números: • Uno para indicar en cuál bloque está la persona • Otro para especificar su posición dentro del bloque. • Posición = Bloque:Posición 3:45 0:50

  23. Posición 1 Posición 2 mts 100 200 300 400 500 3:45 0:50 2.4 Segmentación • Para obtener la ubicación real debe realizarse la siguiente operación: • Ubicación = Bloque*100 + Posición • Posición1 = 0*100 + 50 = 50 • Posición2 = 3*100 + 45 = 345

  24. 2.4 Segmentación • En el caso de los procesadores 80X86, los bloques se llaman SEGMENTOS y la posición se llama DESPLAZAMIENTO • En modo real, cada una se describe con un número de 16 bits. • Operando en modo real • Dirección Real = Segmento*16 + Desplazamiento. • La Dirección Real ya es una cantidad de 20 bits. • Esto significa que toda dirección tiene 2 partes: Un Segmento y un desplazamiento.

  25. 2.4 Segmentación en Modo Protegido • Es importante recalcar que cuando los procesadores 80386 o posteriores operan en modo protegido, la segmentación funciona de manera muy diferente. • Cada segmento puede ser de hasta 4 Gbytes. • Maneja memoria virtual, lo que implica un esquema de paginación. • Maneja también multitarea y un esquema de protección de memoria.

  26. 2.5 Modos de direccionamientos • Modos de direccionamiento de datos • Direccionamiento de registro • Direccionamiento inmediato • Direccionamiento directo • Direccionamiento indirecto por registro • Direccionamiento base-más-índice • Direccionamiento relativo al registro • Direccionamiento relativo a base-más-índice • Direccionamiento índice escalado (x386 ..) • Modos de direccionamiento de memoria del programa • Direccionamiento relativo al programa • Direccionamiento directo • Direccionamiento indirecto • Observe la gran cantidad de modos de direccionamiento de datos.

  27. 2.5 Modos de direccionamientos • No se permite la instrucción MOV de segmento a segmento. • No se permite que el registro destino sea el segmento de código CS. • No son peremidos tamaños mezclados de registros.

  28. 2.5.1 Direccionamiento de registro • Transfiere una copia de un byte o palabra desde el registro o localidad de memoria fuente hacia el registro o localidad de memoria destino. Ejemplo: • MOV AX,BX Copia el contenido del reg. DX al reg. CX. Fuente Destino Generación de la dirección MOV AX,BX Reg. BX Reg. AX • En los 386 y posteriores es posible transferir una palabra doble

  29. 2.5.1 Direccionamiento de registro • Ejemplos: MOV AL,BL Copia BL en AL. MOV AX,CX Copia CX en AX. MOV SI,DI Copia DI en SI. MOV BX,ES Copia ES en BX MOV ES,DS No es permitido MOV BL,DX No es permitido MOV CS,AX No es permitido

  30. 2.5.2 Direccionamiento inmediato • Transfiere el dato (byte o palabra) inmediatamente al registro o localidad de memoria destino. Ejemplo: • MOV CH,3AH Copia el contenido del reg. DX al reg. CX. Fuente Destino Generación de la dirección MOV CH,3AH 3AH Reg. CH • En los 386 y posteriores es posible transferir una palabra doble

  31. 2.5.2 Direccionamiento inmediato • Ejemplos: MOV BL,44 Copia 44 dec. en BL MOV AX,44H Copia 0044H en AX MOV SI,0 Copia 0000H en SI MOV AL,’A’ Copia A ASCII en AL MOV AX,’AB’ Copia BA ASCII en AX

  32. 2.5.3 Direccionamiento directo • Se aplica a una istrucción MOV entre una localidad de memoria y AL, Ax o EAX. La dirección está formada por la suma del desplazamiento más la dirección dada por defecto en el segmento de datos. Ejemplo: MOV AL,[1234H] Copia el contenido de la localidad de mem. 11234H a AL. Fuente Generación de la dirección Destino Dirección [11234H] MOV [1234H],AX Reg. AX DS x 10H + Desplazamiento 10000H + 1234H • Cuando DS=1000

  33. 2.5.4 Direccionamiento indirecto por registro • Permite direccionar cualquier localidad de memoria mediante una dirección de desplazamiento contenida en: BP, BX, DI y SI. Ejemplo: • MOV [BX],CL Copia el contenido del reg. CL a la localidad de memoria direccionada por BX, en DS. Fuente Generación de la dirección Destino Dirección [10300H] MOV [BX],CL Reg. CL DS x 10H + BX 10000H + 0300H • Cuando DS=1000

  34. 2.5.5 Direccionamiento base-más-índice • Se utiliza un reg. base (BP o BX) y un reg. índice (DI o SI) para direccionar indirectamente la memoria. Ejemplo: MOV [BX+SI],BP Copia el contenido del reg. BP a la dirección de mem. direccionada por BX + SI en el seg. de datos. Fuente Generación de la dirección Destino Dirección [10500H] MOV [BX+SI],BP Reg. BP DS x 10H + BX + SI 10000H + 0300H + 0200H • Cuando DS=1000

  35. 2.5.6 Direccionamiento relativo a registro • Los datos de un segmento de memoria son direccionados sumando el desplazamiento al contenido de un registro base o índice (BP, BX, DI o SI). Ejemplo: MOV CL,[BX+4] Copia el contenido de la localidad de mem. del DS direccionada por BX más 4 en CL. Fuente Generación de la dirección Destino Dirección [10304H] MOV CL,[BX+4] Reg. CL DS x 10H + BX + 4 10000H + 0300H + 4 • Cuando DS=1000

  36. 2.5.7 Direccionamiento relativo a base-más-índice • Se utiliza un reg. base (BP o BX) y un reg. índice (DI o SI) más un desplazamiento para formar la dirección de memoria. Es utilizado a menudo para direccionar un arreglo bidimensional de datos de memoria. Ejemplo: MOV ARRAY[BX+SI],DX Copia DX a la localidad de mem del DS direccionada por la suma de ARRAY, BX y SI. Fuente Generación de la dirección Destino Dirección [11500H] Reg. DX MOV ARRAY[BX+SI],DX DS x 10H + ARRAY + BX + SI 10000H + 1000H + 0300H + 0200H • Cuando DS=1000, ARRAY=1000H

  37. 2.5.8 Direccionamiento índice escalado • Exclusivo para procesadores x386 y posteriores. Utiliza dos registros de 32 bits (uno base y otro ídice). El reg. índice es multiplicado por un factor de escalamiento 1X, 2X, 4X u 8X. El factor 1X está implicito. 2X es empleado para direccionar arreglos de mem. de palabras de 16 bits. 4X para palabras dobles y 8X para areglos de mem. de palabra cuádruple. Ejemplo: MOV [EBX+2x ESI],AX Copia AX en la loc. De mem. Del DS direccionada pro la suma EBX más dos veces ESI. Fuente Generación de la dirección Destino Dirección [10700H] Reg. AX MOV [EBX+2x ESI],AX DS x 10H + EBX + 2 x ESI 10000H + 00000300H + 00000400H • Cuando DS=1000, EBX=300H, ESI=200H

  38. GRACIAS POR NO DOMIRSE

More Related