UNIVERSIDAD AUTÓNOMA DE YUCATÁN FACULTAD DE MATEMÁTICAS LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMA DELENGUAJE ENSAMBLADOR DESCRIPCIÓN DE LA ASIGNATURA Al finalizar el curso el alumno aplicará las instrucciones del lenguaje ensamblador para accesar y controlar el hardware de los equipos de cómputo, así como de los periféricos conectados a él. Tendrá un conocimiento medio de los sistemas basados en microprocesadores de la familia x86 y de la interfaz hardware/software. OBJETIVO GENERAL: Al término del curso, el alumno aplicará los conceptos y características de la arquitectura de computadoras para elaborar y depurar programas escritos en lenguaje ensamblador. UNIDADES 1. INTRODUCCIÓN (4 horas) Objetivo: al finalizar la unidad el alumno conocerá los aspectos fundamentales del lenguaje ensamblador , sus ventajas y desventajas, así como la estructura y partes de un programa en ensamblador. 1.1.- Historia del lenguaje ensamblador. 1.2.- La familia x86 de Intel. 1.3.- Ventajas y desventajas del ensamblador. 1.4.- Estructura de los programas en ensamblador. 2. REPRESENTACIÓN DE DATOS (8 horas) Objetivos: al finalizar la unidad el alumno aplicará los conocimientos adquiridos para efectuar cambios de base entre los sistemas decimal, binario y hexadecimal. Podrá realizar operaciones aritméticas con diferentes bases y conocerá la forma de manipulación de bits y sus aplicaciones. 2.1.- Sistemas numéricos. 2.2.- Conversiones entre sistemas numéricos. 2.3.- Operaciones aritméticas en binario y hexadecimal. 2.4.- Complemento a 2. 2.5.- Operaciones lógicas a nivel de bits. 2.6.- Desplazamiento y rotación de bits. 2.7.- Usos y aplicaciones. 3. LA FAMILIA DE MICROPROCESADORES x86. (11 horas) Objetivos: al finalizar la unidad el alumno conocerá la forma como están estructurados los microprocesadores de la familia x86 y la manera cómo organizan la memoria para su acceso. 3.1.- Introducción. 3.2.- Los registros del CPU. 3.3.3.4.3.5.3.6.3.7.3.8.- 3.2.1.- Los registros de propósito general. 3.2.2.- Registros de segmento. 3.2.3.- El registro de instrucciones. 3.2.4.- Los registros Index y Pointer. 3.2.5.- Banderas. La unidad de aritmética y lógica. La unidad de interface de bus. La unidad de control. El conjunto de instrucciones del x86. Diferencias entre la familia x86. Organización física de la memoria. 4. TIPOS DE DATOS (8 horas) Objetivos: al finalizar la unidad el alumno conocerá la manera de declarar diferentes tipos de variables y constantes en los programas en ensamblador, y la forma de accesarlas a través de los tipos de direccionamientos. 4.1.- Tipos de datos en ensamblador. 4.2.- Declaración de variables. 4.3.- Declaración de constantes. 4.4.- Accesos directos e indirectos a datos. 4.5.- Inicialización de variables. 4.6.- Declaración de cadenas. 4.7.- Modos de direccionamientos a datos. 5. CONTROL DE FLUJO DEL PROGRAMA (7 horas) Objetivos: al finalizar la unidad el alumno aplicará las instrucciones de saltos y toma de decisión para controlar el flujo en que se ejecutarán las instrucciones en los programas, así como el manejo de la pila y los registros de banderas. 5.1.- Saltos condicionales. 5.2.- Saltos incondicionales. 5.3.- Instrucciones lógicas. 5.4.- Tipos de toma de decisión. 5.5.- Uso de la pila. 6. IMPLEMENTACIÓN DE SUBRUTINAS (5 horas) Objetivos: al finalizar la unidad el alumno aplicará los conceptos de dividir un programa en módulos, las formas de llamarlos, y el pase de parámetros hacia ellos. 6.1.- Declaración de subrutinas. 6.2.- Llamado a subrutinas. 6.3.- Pase de parámetros por valor y por referencia. 6.4.- Recursividad. 7. ENTRADAS Y SALIDAS (8 horas) Objetivos: al finalizar la unidad el alumno aplicará los conceptos vistos para controlar la entrada y salida de datos desde y hacia los diferentes periféricos de un equipo de cómputo. 7.1.- Entrada de datos desde el teclado. 7.2.- Salida de datos a video. 7.3.- Conceptos de archivos a disco. 7.4.- Manejo de errores en archivos 7.5.- Lectura y escritura de archivos de texto. 7.6.- Acceso a las áreas de una unidad de disco. 7.7.- Acceso a puertos. 8. MANEJO DE INTERRUPCIONES (10 horas) Objetivos: al finalizar la unidad el alumno aplicará el uso de las interrupciones para efectuar diversas acciones y operaciones sobre el hardware de los equipos de cómputo basados en la familia x86. 8.1.- El concepto de interrupción. 8.2.- Tipos de interrupciones. 8.3.- El vector de interrupciones y el chip 8259. 8.4.- Las interrupciones y la pila. 8.5.- Funciones y subfunciones. 8.6.- Ejemplos y aplicaciones. 9. INTERFACE CON C/C++ Y PASCAL. (5 horas) Objetivo: al finalizar la unidad el alumno conocerá y aplicará las instrucciones y metodologías para enlazar programas escritos en lenguajes de alto nivel con el lenguaje ensamblador. 9.1.- Introducción. 9.2.- Convenios de llamada. 9.3.- Directivas de compilación. 9.4.- Pase de parámetros. 9.5.- Compartición de datos. 9.6.- Uso de los registros. ESTRATEGIAS DE ENSEÑANZA Conferencia, interrogatorio, tormenta de ideas, resolución de ejercicios, grupos de discusión, demostración en computadora. RECURSOS DIDÁCTICOS Exposición, pizarrón, acetatos, equipo de cómputo, páginas web. CRITERIOS DE EVALUACIÓN 3 exámenes parciales (1.3 horas c/u) Tareas Total ANTECEDENTES ACADÉMICOS Arquitectura de Computadoras. NEXOS ACADÉMICOS Interfaces con el Mundo Real. 80% 20% 100% BIBLIOGRAFÍA Básica: Lenguaje Ensamblador para Microcomputadoras IBM. J. Terry Godfrey Prentice Hall Hispanoamericana, 1994. Lenguaje Ensamblador para la IBM-PC Peter Norton Prentice Hall, 1992. Manual del Microprocesador 80386. Chris Pappas. Mc Graw-Hill. Complemenentaria: Mastering Turbo Assembler. Tom Swan Sams Publishing, 1996. Assembler inside & out. Harle Hahn. Mc Graw-Hill. Elaboración: Fecha de elaboración: I.E.C. Raúl Duarte Achach. Septiembre, 1998. Modificación: Fecha de Modificación: M. en C. Alberto Marín Hernández. Diciembre, 2001.