universidad autonoma de baja californiafiad.ens.uabc.mx/planes/computacion/puas/12102... ·...

15
" UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA COORDINACIÓN DE FORMACIÓN BÁSICA COORDINACIÓN DE FORMACIÓN PROFESIONAL Y VINCULACIÓN UNIVERSITARIA PROGRAMA DE UNIDAD DE APRENDIZAJE HOMOLOGADO l. DATOS DE IDENTIFICACIÓN 1. Unidad académica (s): CAMPUS ENSENADA: FACULTADDEINGENIERÍA,ARQUITECTURAy DISEÑO,FACULTADDEINGENIERÍAy NEGOCIOSSAN QUINTÍN CAMPUS MEXICALI: FACULTADDEINGENIERÍA,ESCUELADEINGENIERÍA y NEGOCIOSGUADALUPEVICTORIA CAMPUS TIJUANA: FACULTADDE CIENCIASQUÍMICASE INGENIERÍA, FACULTADDEINGENIERÍAy NEGOCIOS 2. Programa (s) de estudio: (Técnico, Licenciatura (s)): INGENIERÍAENCOMPUTACIÓN 3. Vigencia del plan: 2009-2 Organización de Computadoras y Lenguaje Ensamblador 12102 4. Nombre de la unidad de aprendizaje HE 2 CR 6 2 HL: 2 HT: HPC: HCL: 6. HC: 7. Etapa de formación a la que pertenece: _Disciplinaria'----- _ 8. Carácter de la unidad de aprendizaje: Obligatoria _X. _ Optativa _ 9. Requisitos para cursar la unidad de aprendizaje: Ninguno

Upload: others

Post on 10-Jan-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

"

UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIACOORDINACIÓN DE FORMACIÓN BÁSICA

COORDINACIÓN DE FORMACIÓN PROFESIONAL Y VINCULACIÓN UNIVERSITARIAPROGRAMA DE UNIDAD DE APRENDIZAJE HOMOLOGADO

l. DATOS DE IDENTIFICACIÓN

1. Unidad académica (s): CAMPUS ENSENADA: FACULTADDEINGENIERÍA,ARQUITECTURAyDISEÑO,FACULTADDEINGENIERÍAy NEGOCIOSSAN QUINTÍNCAMPUS MEXICALI: FACULTADDEINGENIERÍA,ESCUELADEINGENIERÍAy NEGOCIOSGUADALUPEVICTORIACAMPUS TIJUANA: FACULTADDE CIENCIASQUÍMICASE INGENIERÍA,FACULTADDEINGENIERÍAy NEGOCIOS

2. Programa (s) de estudio: (Técnico, Licenciatura (s)): INGENIERÍAENCOMPUTACIÓN 3. Vigencia del plan: 2009-2

Organización de Computadoras y Lenguaje Ensamblador 121024. Nombre de la unidad de aprendizaje

HE 2 CR 62 HL: 2 HT: HPC: HCL:6. HC:

7. Etapa de formación a la que pertenece: _Disciplinaria'----- _

8. Carácter de la unidad de aprendizaje: Obligatoria _X. _ Optativa _

9. Requisitos para cursar la unidad de aprendizaje: Ninguno

Page 2: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

,.

Firmas Homologadas

Fecha de elaboración: Revisión May

Formuló:Laura Elena Martínez C.Pablo Martin Navarro A.Anabella Serrano PérezÁngel Humberto Corral DomínguezMarco Valente Cabrera SaldañaJosé de Jesús Zamarripa TopcteLuz Evelia López Chico

VO.BoQ. Noemí Hemández HemándezCargo: Subdirectora Facultad de Ciencias uímic

VO.Bo ¿~//~M.I. Joel Me1chor Ojeda Ruiz ~ /~Cargo: Subdirector Facultad de Ingeniería, rguitectura y Diseño (Ensenada)

VO.BoM.C. Lizzetle Velasco Au1cyCargo: Subdirectora Facultad de Inge-!'--=-~l

VO.BoDra. Ana María Vázquez Espin zCargo: Subdirectora Escuela de In enier

UNIVERSIDAD·AUTONOMlDE BAJA CALIfORNiA

FACULTAD DE INGENIERJA,ARQUITECTURA Y DISENO

ENSENADA, s.c. FACULTADEl:CENaASauUcAsl~

FACULTAD DEINGENIER/A

Page 3: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

II. PROPÓSITO GENERAL DEL CURSO

El curso tiene como propósito que el alumno conozca la arquitectura interna de un microprocesador así como su programación a bajo nivel. Con esto, el alumno obtiene las bases para comprender el funcionamiento de los lenguajes de algo nivel. Este curso sirve como antecedente para las materias Microcontroladores y Arquitectura de Computadoras. Para lograr la competencia de esta materia, el alumno deberá ser competente en programación básica en un lenguaje de alto nivel, preferentemente C así como manejar conceptos básicos del funcionamiento y mandos de un sistema operativo de 32 bits como Linux. Así mismo debe utilizar con competencia las herramientas básicas de programación.

III. COMPETENCIA (S) DEL CURSO Manipular los elementos de un sistema de cómputo para la construcción de programas y rutinas en un lenguaje de bajo nivel para reducir el tiempo de ejecución e incrementar la eficiencia de programas y sistemas.

IV. EVIDENCIA (S) DE DESEMPEÑO Desarrollar un programa o rutina en un lenguaje de bajo nivel que manipule un sistema de cómputo.

Page 4: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

V. DESARROLLO POR UNIDADES

Competencia: El alumno conocerá la arquitectura de un microprocesador necesario para la comprender su funcionamiento y comenzará a desarrollar programas en lenguaje ensamblador. Contenido temático: Duración: 4 horas

Capitulo I Introducción

1.1 Sistemas Numéricos 1.2 Organización de una computadoras 1.3 El lenguaje ensamblador 1.4 Como crear un programa sencillo

Page 5: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

V. DESARROLLO POR UNIDADES

Competencia: El alumno conocerá y aplicará sentencias del lenguaje ensamblador para realizar operaciones aritméticas, lógicas y ciclos en el desarrollo de programas en lenguaje ensamblador.

Contenido temático Duración: 8 horas Capitulo II Lenguaje Ensamblador Básico

2.1 Trabajando con enteros Representación de enteros Extensión del signo Aritmética de complemento a dos Programa de ejemplo Aritmética de presición extendida 2.2 Estructuras de control Comparaciones Instrucciones de ramificación Instrucciones de bucle 2.3 Traducir estructuras de control estándar Instrucciones if Bucles while Bucles do while 2.4 Ejemplo: Hallar números primos

Page 6: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

V. DESARROLLO POR UNIDADES

Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones de lenguaje ensamblador para desarrollar programas de bajo nivel. Aprenderá la manera de utilizar el lenguaje C como herramienta de programación en ensamblador.

Page 7: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

V. DESARROLLO POR UNIDADES

Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones de lenguaje ensamblador para desarrollar programas de bajo nivel. Aprenderá la manera de utilizar el lenguaje C como herramienta de programación en ensamblador. Contenido temático Duración: 3 horas Capitulo III Operaciones con BITS

3.1 Operaciones de desplazamiento Desplazamientos lógicos Uso de los desplazamientos Desplazamientos aritméticos Desplazamientos de rotación Aplicación simple 3.2 Operaciones booleanas entre bits Operación and Operación or Operación xor Operación not Instrucción test Uso de las operaciones con bits 3.3 Evitando saltos condicionales 3.4 Manipulando bits en C 3.5 Representaciones little endian y big endian Cuando tener cuidado con little y big endian 3.6 Contando bits Método uno Método dos Método tres

Page 8: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

V. DESARROLLO POR UNIDADES

Competencia: El alumno aprenderá a optimizar programas utilizando subprogramas en ensamblador, utilizando la pila del microprocesador e interfaz de Lenguaje C. Contenido temático Duración: 6 horas Capitulo IV SUBPROGRAMAS

4.1 Direccionamiento indirecto 4.2 Sencillo subprograma de ejemplo 4.3 La pila 4.4 Las instrucciones call y ret 4.5 Convenciones de llamado pasando parámetros en la pila variables locales en la pila 4.6 Programas Multimodulo 4.7 Interfazando Ensamblador con c Ahorrando registros Etiquetas de funciones Pasando parámetros Calculando las direcciones de las variables locales Retornando valores Ejemplos Llamando funciones de c desde ensamblador 4.8 Subprogramas entrantes y recursivos Subprogramas recursivos Revisión de tipos de variables según su alcance en c

Page 9: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

V. DESARROLLO POR UNIDADES

Competencia: El alumno aprenderá el manejo de arreglos de datos en ensamblador. Contenido temático Duración: 4 horas Capitulo V ARREGLOS

5.1 Introducción Definir arreglos Acceder a elementos de los arreglos Direccionamiento indirecto mas avanzado Ejemplo Arreglos multidimensionales 5.2 Instrucciones de arreglos/cadenas Leer y escribir en memoria El prefijo de instrucción rep Comparación de las instrucciones de cadenas Prefijos de instrucción repx Ejemplo

Page 10: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

V. DESARROLLO POR UNIDADES Competencia: El alumno aprenderá a optimizar programas utilizando subprogramas en ensamblador, utilizando la pila del microprocesador e interfaz de Lenguaje C.

Contenido temático Duración: 4 horas Capitulo VI PUNTO FLOTANTE

6.1 Representación de punto flotante Números binarios no enteros Representación IEEE de punto flotante 6.2 Aritmética de punto flotante Suma Resta Multiplicación y división 6.3 El coprocesador numérico Hardware Instrucciones Ejemplos Formula cuadrática

Page 11: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

ESTRUCTURA DE LAS PRÁCTICAS

No. de Práctica Competencia(s) Descripción Material de Apoyo

Duración

Unidad 1: Entorno de Trabajo

Conocerá el nombre de las herramientas que utilizará para elaborar programas en ensamblador e identificará los sitios Web en los que podrá encontrar información que le podrá auxiliar al elaborar programas en lenguaje ensamblador.

Leer las opiniones de distintos autores acerca de la importancia de aprender ensamblador. Participa en el foro de discusión Lenguaje Ensamblador contestando las siguientes preguntas apoyándote en las lecturas:

1. Qué es el lenguaje ensamblador? 2. Por qué debe ser importante para ti

aprenderlo?

Internet 1 sesión de laboratorio

Unidad 2: Ciclo de Desarrollo

Empleará las herramientas de desarrollo para crear un programa en ensamblador a partir de un programa dado.

Leer 4.2 The Parts of an Assembly Program del sitio Linux Assembly Tutorial Con base en la lectura, crea un documento estructuraPrograma.doc Transcribir en un editor, el programa que se encuentra en 4.4 "Hello World!" en Linux Assembly. El archivo que se crea se deberá llamar hello.asm para que se puedan realizar los pasos siguientes sin modificaciones. Ensamblar el programa con el mando indicado. Verificar que archivos se generan después de ensamblar. Enlazar el programa con el mando y verificar que archivos se generan: Ejecutar el programa y observar la salida que aparece en pantalla. Modifica el programa de ejemplo para que escriba dos veces el mensaje: Hola, tu nombre.

NASM 1 sesión de laboratorio

Unidad 3: Depuración de Programas

Emplear la herramienta de depuración DDD para depurar y verificar la ejecución de programas.

Busca un tutorial del debugger ddd. Realizar los pasos que se indican en el tutorial utilizando el programa hello.asm que se utilizó en la práctica anterior. Copiar el programa lee.asm. Ensamblar y ejecutar el programa en el DDD. Utilice el DDD para encontrar los errores que tiene el programa y eliminarlos. Investigar y comprobar cómo funciona el botón EDIT que se encuentra en la ventana de botones. Investigar y comprobar cómo funciona el botón MAKE que se encuentra en la ventana de botones.

NASM y DDD 1 sesión de laboratorio

Unidad 4: Manejo Simplificado de Entrada y Salida de Datos

Emplear las rutinas de entrada y salida propuestas por Carter para ingresar datos y mostrar resultados en programas de ensamblador. Aplicar los

Descomprimir el archivo: linux-ex.zip en un directorio y ensamblar los archivos:

NASM y DDD 1 sesión de laboratorio

Page 12: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

conocimientos adquiridos en las practicas anteriores para depurar un programa que utilice dichas rutinas.

Ensamblar y enlazar el programa de ejemplo first.asm:

Ejecutar el programa: Leer las secciones 1.4.1 a la 1.4.5 del libro PCasm-book de Paul Carter, para comprender el funcionamiento del programa y el proceso de ensamblado y enlace. Desglose en una tabla el funcionamiento de cada una de las rutinas, indicando donde deben ponerse los datos de entrada y donde se colocarán los datos de salida una vez que se hayan ejecutado las rutinas.

Unidad 5: Cálculos Aritméticos

Utilizar las instrucciones aritméticas del microprocesador para desarrollar un programa que realice cálculos aritméticos.

Hacer un programa en lenguaje ensamblador que funcione como calculadora. Hacer un programa que lea la edad de una persona, y que calcule la cantidad de horas que ha dormido en su vida.

NASM y DDD 1 sesión de laboratorio

Unidad 6: Estructuras de Control

Manipular las instrucciones de control de bifurcaciones para desarrollar programas en los que se emulen las estructuras de control de los lenguajes de alto nivel.

Elaborar un programa que muestre el siguiente menú de opciones: 1) Cálculos con un triángulo 2) Cálculos con un rectángulo 3) Calcular serie de Fibonacci 4) Terminar el programa Modificar el programa anterior para que: 1. Muestre un mensaje indicando la opción que se seleccionó (opciones A y B). 2. Solo acepte las opciones del menú y muestre un mensaje de error cuando la opción seleccionada no sea una de las correctas. 3. Cuando se escoja la opción C, deberá solicitar al usuario la cantidad de números de la serie de Fibonacci que desea ver, calcular la serie y mostrarla. Modificar el programa anterior para que muestre los siguiente submenús en las opciones correspondientes: Cálculos con un triángulo 1) Capturar las medidas de los lados 2) Calcular el área del triángulo 3) Calcular el perímetro del triángulo 4) Reconocer el tipo de triangulo 5) Regresar al menú principal

NASM y DDD 1 sesión de laboratorio

Unidad 7: Operaciones de Bits

Aplicar las instrucciones de manipulación de bits para desarrollar programas.

Hacer un programa que realice una multiplicación donde el multiplicando sea dado por el usuario y el multiplicador será 20, hacer esta operación sin

NASM y DDD 2 sesiones de laboratorio

Page 13: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

utilizar MUL ó IMUL. Hacer un programa que simule la luz del auto fantástico.

Unidad 8: Subrutinas Estructurará un programa con llamadas a múltiples subprogramas para comprender el papel que juega la pila y el microprocesador en la ejecución de subrutinas.

Hacer un programa que realice las siguientes conversiones: Decimal – Binario Decimal – Hexadecimal Decimal – Octal Hexadecimal - Decimal Binario – Decimal Octal – Decimal

NASM y DDD 2 sesiones de laboratorio

Unidad 9: Manipulación de Arreglos

Definirá arreglos de datos y los manipularán sus contenidos tratándolos como números y como cadenas.

Recuerde el algoritmo para calcular la transpuesta de una matriz. Hacer un programa que calcule y muestre la transpuesta de una matriz de 4x4 capturada.

NASM y DDD 2 sesiones de laboratorio

Unidad 10: Números de Punto Flotante

Comprenderá la manera en que el microprocesador y su coprocesador matemático representa y manipula los números de punto flotante creando un programa en el que emplee las instrucciones de punto flotante.

Recuerde la fórmula para calcular el área de un triángulo utilizando la medida de sus tres lados y la medida del semi-perimetro. Tomando como base el programa de ejemplo del libro “PCasm-Book” de Paul Carter , escriba un programa en el que se lean los valores de los tres lados de un triángulo y se calcule e imprima el área de éste. Considere los siguientes puntos en su programa:

Las medidas de los lados deberán verificarse para asegurar que si formen un triángulo. Para esto deberá escribir una rutina en ensamblador que regrese un 0 en caso de que no se forme un triángulo y un 1 en caso de que si se forme el triángulo.

Las medidas de los lados se darán con números de punto flotante.

El área del triángulo se deberá calcular en una rutina en ensamblador

NASM y DDD 1 sesión de laboratorio

Page 14: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

VII. METODOLOGÍA DE TRABAJO Este curso se lleva a cabo en dos partes, una en el aula y otra en el laboratorio. En el aula se discutirán los aspectos teóricos del lenguaje ensamblador; mientras que en el laboratorio se realizarán trabajos prácticos como programas en ensamblador que ejemplifiquen el funcionamiento de las instrucciones del microprocesador.

VIII. CRITERIOS DE EVALUACIÓN

• Exámenes parciales • Tareas e investigaciones • Proyecto

Page 15: UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIAfiad.ens.uabc.mx/planes/computacion/puas/12102... · Competencia: El alumno comprenderá la lógica de los microprocesadores y utilizará instrucciones

IX. BIBLIOGRAFÍA

Básica Complementaria

Introduction to 80x86 Assembly Language and Computer Architecture Richard C. Detmeter Jones & Bartlett Publishers; 2 edition (February 26, 2009) pcasm-book, Paul Carter On line book

Assambly Lenguaje for Intel-based Computers Kip R. Irvine Prentice Hall