Atributos
Sigla: 
CI-0118
Créditos: 
4
Horas: 
5
Clasificación: 
Curso propio
Énfasis y ciclo: 
Tronco común 2.II
Descripción: 

Este curso toma como base conceptos de arquitectura de la CPU y su relación con los dispositivos periféricos para aprender el lenguaje ensamblador y comprender su relación con los lenguajes de alto nivel. Además, se estudian entornos especializados de aplicación del lenguaje ensamblador.

Objetivo general: 

Este curso toma como base conceptos de arquitectura de la CPU y su relación con los dispositivos periféricos para aprender el lenguaje ensamblador y comprender su relación con los lenguajes de alto nivel. Además, se estudian entornos especializados de aplicación del lenguaje ensamblador.

Objetivos específicos: 

Durante este curso el estudiante desarrollará habilidades para:

  1. Analizar las capacidades y limitaciones de una arquitectura para comprender su relación con los lenguajes de alto nivel y el sistema operativo mediante el estudio de la estructura lenguaje ensamblador.
  2. Diseñar e implementar programas para hacer un uso eficiente y eficaz de los recursos de la computadora utilizando lenguaje ensamblador.
  3. Desarrollar programas en lenguaje ensamblador que se comuniquen con dispositivos periféricos utilizando servicios de bajo nivel del sistema operativo para comprender los mecanismos de interacción de la computadora con el entorno externo.
  4. Diseñar e implementar programas que integren el lenguaje ensamblador con lenguajes de alto nivel para resolver problemas de forma más eficiente o eficaz utilizando lenguajes de bajo nivel.
  5. Resolver problemas clásicos de bajo nivel mediante el desarrollo de aplicaciones específicas de lenguaje ensamblador para dar una visión global del rol del lenguaje ensamblador en el ecosistema computacional.

Transversales:

Además, cada estudiante desarrollará habilidades en los siguientes ejes trasversales:

  1.  Seguridad
  2. Trabajo en equipo
  3. Computación paralela y distribuida
  4. Buenas prácticas de programación
  5. Optimización

 

Contenidos: 
Objetivo específico Eje temático Desglose
1 Conceptos básicos •    Historia del lenguaje máquina y compiladores 
•    Otras arquitecturas (RISC, máquinas de pila, etc.) 
•    Instrucciones del lenguaje ensamblador 
•    Macros y directivas del ensamblador  
•    Ensamblaje y desensamblaje de instrucciones 
•    Ingeniería reversa 
•    Compilador y depuración  
•    Linking, loader, relocalización, resolución de símbolos 
1,2 Programación en lenguaje ensamblador •    Representación de datos (enteros – shortint, longint –, cadenas, punto flotante, ascii, ansi, unicode) 
•    Endianness (little endian, big endian) 
•    Bitness (compatibilidad entre arquitecturas de software – ej. 32 vs. 64 bits) 
•    Modos de direccionamiento de la memoria (relación con el direccionamiento en alto nivel)  
•    Optimización del uso de la memoria y de cachés  
2,3 Comunicación con dispositivos periféricos •    Interrupciones, excepciones, procesos, señales 
•    Programación del sistema de vídeo (GPU)
•    Programación con funciones del BIOS (arranque, entrada/salida)
4 Relación con lenguajes de alto nivel •    Interfaz con lenguajes de alto nivel  
•    Stack frame
•    Recursividad 
•    Prólogo
•    Epílogo 
•    Paso de parámetros 
•    Convenciones de uso de registros 
•    Alcance de las variables
3,4,5 Problemas conocidos de bajo nivel •    Coprocesador matemático y punto flotante en el procesador 
•    Optimización y comparación
•    Device drivers 
•    Fundamentos del boot manager
•    Graficación 
•    Buffer overflow 
•    Soporte a virtualización
Bibliografía: 

Abel, Peter. Lenguaje Ensamblador y programación para PC IBM y compatibles. Pearson Education. Tercera Edición. 1996. 

Brey, Barry. Los microprocesadores Intel. Pearson Education. Sétima Edición. 2006. 

Bryant, Randal y O’Hallaron, David. Computer Systems, A programmer’s perspective. Tercera Edición. 2015

Irvine, Kip. Lenguaje ensamblador para computadoras basadas en Intel. Pearson Educación. Quinta Edición. 2008.
 

LIberación de responsabilidad: 

Este no es un documento oficial. Documentos oficiales se entregan en la secretaría de la escuela.