You are on page 1of 13

Universidad Autnoma Gabriel Ren Moreno

FACULTAD DE INGENIERIA EN CIENCIAS


DE LA COMPUTACIN Y TELECOMUNICACIONES

PROGRAMA ANALTICO DE ASIGNATURA

1. IDENTIFICACION DE LA MATERIA

NOMBRE DE LA ASIGNATURA : Programacin en Ensamblador


PRE-REQUISITOS : INF - 211
SIGLA Y CODIGO : INF - 221
NIVEL : Cuarto Semestre
HORAS : 6 (4 HT, 2 HP)
CREDITOS :5
Programa Vigente : 1/2015
REVISADO EN : Febrero 2015
Docentes : Dr. Corrado Vallet
Ing. Valentn Flores

2. JUSTIFICACION
Materia fundamental en la formacin del estudiante, al permitirle adquirir un
conocimiento detallado del funcionamiento de un programa en un
procesador y de la metodologa de programacin de bajo nivel escribiendo y
ejecutando programas escritos en lenguaje ensamblador especficamente
para la arquitectura del procesador Intel 80x86 (IA32), buscando optimizar
el uso del hardware.

3. OBJETIVOS DE LA ASIGNATURA

3.1 OBJETIVOS GENERAL


Escribir y ejecutar programas en lenguaje ensamblador para los
procesadores Intel 80x86 (IA32).

3.2 OBJETIVOS ESPECIFICOS


Describir la arquitectura del procesador Intel80x86
Describir los diferentes componentes de los procesadores Intel 80x86.
Describir los registros del procesador.
Relacionar los registros del procesador con los diferentes modos de
direccionamiento.

Pgina | 1
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

Conocer las distintas instrucciones del procesador Intel80x86.


Desarrollar programas en lenguaje ensamblador que contribuyan a la
optimizacin de los recursos de una computadora.
Ampliar la lgica de programacin y la resolucin de problemas de parte del
estudiante.

4. CONTENIDO MINIMO
Sistemas numricos. Representacin de los tipos de datos. La arquitectura de los
procesadores Intel 80x86 (IA32). Registros del procesador. Modos de
direccionamiento del procesador. Instrucciones del procesador. Instrucciones
transferencia de datos. Instrucciones aritmticas y lgicas. Instrucciones de control
de flujo. Instrucciones de manejo de cadenas. Instrucciones de llamadas a
procedimientos. Manejo de entrada y salida. Estructura de un programa
ensamblador. Programacin en ensamblador: ensamblado, enlazado y ejecucin.
Programacin en punto flotante.

5. UNIDADES DEL PROGRAMA ANALITICO

UNIDAD I INTRODUCCIN
Tiempo: 14 Horas.

Objetivos:

Conocer la terminologa bsica y el contexto requerido para el estudio de la


materia.
Comprender cmo se representan los diferentes tipos de datos en un
computador.
Comprender cmo funciona un computador bajo el modelo de Von
Neumann.
Conocer los conceptos y diferencias entre el lenguaje Ensamblador y
lenguaje de Mquina.

Contenido:

1.1. Sistemas de numeracin: DEC, BIN, HEX


1.2. Conversin entre sistemas de numeracin de diferentes bases.
1.3. Operaciones aritmticas entre sistemas numeracin de diferentes bases.
1.4. Cdigos BCD, ASCII, UNICODE.
1.5. Aritmtica BCD y ASCII

Pgina | 2
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

1.6. Tipo de datos.


1.7. Representacin de nmeros enteros sin signo (SS).
1.8. Representacin de nmeros enteros con signo (CS).
1.9. Complementos:
1.9.1. Complemento a 1
1.9.2. Complemento a 2
1.10. Representacin en Signo/Magnitud, C1, C2.
1.11. Aritmtica de Complemento a 2 (suma y resta).
1.12. Desbordamiento (overflow)
1.13. Representacin de nmeros en punto flotante.
1.14. Extensin con cero y extensin con signo.
1.15. Operaciones lgicas: AND, OR, XOR, NOT
1.16. Operaciones de desplazamiento lgicas, aritmticas y de rotacin.
1.17. Modelo de Von Neumann.
1.18. El procesador (CPU).
1.18.1 La Unidad Aritmtica y Lgica (ALU).
1.18.2 La Unidad de Control
1.19. La Unidad de Memoria Principal
1.20. Las Unidades de Entrada y salida.
1.21. Buses de direccin, datos y control
1.22. Las Instrucciones del procesador
1.23. Lenguajes de programacin
1.23.1. Lenguaje de mquina
1.23.2. Lenguaje ensamblador
1.23.3. Lenguajes de alto nivel

UNIDAD II EL PROCESADOR INTEL 80x86 (IA32)


Tiempo: 10 Horas.

Objetivos:
Conocer la arquitectura del procesador Intel 80x86 (IA32).
Describir los distintos registros del procesador.
Describir la organizacin de la memoria.

Contenido:

2.1 La familia de los procesadores Intel 80x86.


2.2 Arquitectura interna del procesador Intel x86-32 (IA32).
2.3 Modelo de programacin.
2.4 Registros de 32 bits del procesador:

Pgina | 3
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

2.4.1 Registros de propsito general (EAX, EBX, ECX, EDX)


2.4.2 Registros punteros e ndices (ESP, EBP) (ESI, EDI).
2.4.3 Registros de segmento (SS, CS, DS, ES)
2.4.4 Registro apuntador de instrucciones (EIP)
2.4.5 Registros de punto flotante.
2.4.6 Registro de banderas (flags).
2.5 Organizacin de la memoria.
2.5.1 Orden de los bytes en memoria (Little-Endian y Big-Endian)
2.6 El stack (pila).
2.7 Unidad aritmtica-lgica.
2.8 Segmentacin.

UNIDAD III JUEGO DE INSTRUCCIONES DEL PROCESADOR


Tiempo: 18 Horas

Objetivos:
Conocer los diferentes modos de direccionamientos del procesador
Intel 80x86
Conocer las principales instrucciones del procesador Intel 80x86.
Emplear diferentes modos de direccionamiento en las instrucciones.
Discriminar las instrucciones considerando los diferentes modos de
direccionamiento.
Describir el proceso de transferencia entre registros y la memoria
desde el punto de vista de las instrucciones del procesador.

Contenido:

3.1 Modos de direccionamiento


3.1.1 Direccionamiento inherente
3.1.2 Direccionamiento inmediato
3.1.3 Direccionamiento por registro
3.1.4 Direccionamiento directo
3.1.5 Direccionamiento base ms ndice
3.1.6 Direccionamiento relativo por registro
3.1.7 Direccionamiento ndice escalado
3.1.8 Manejo de la pila (stack)
3.2 Instrucciones de movimientos de datos:
3.2.1 Instruccin MOV
3.2.2 Instrucciones PUSH, POP

Pgina | 4
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

3.3 Instrucciones aritmticas


3.3.1 Suma y resta:
ADD y SUB
ADC y SBB
INC y DEC
3.3.2 Multiplicacin y divisin:
MUL y IMUL
DIV y IDIV; CBW, CWD, CDQ
3.4 Instrucciones lgicas:
AND, OR, XOR
NOT
3.5 Instrucciones de desplazamiento:
SHL, SHR, SAL, SAR
3.6 Instrucciones de rotacin:
ROL y ROR
3.7 Instrucciones de comparacin:
CMP y TEST
3.8 Instrucciones de conversin de datos:
MOVZX, MOVSX, MOVSXD
3.9 Instrucciones de control de flujo:
3.9.1 Instruccin de salto incondicional:
JMP
3.9.2 Instrucciones de salto condicionales:
Jcc
3.9.3 Instruccin para manejo de ciclos:
LOOP
3.10 Instrucciones de cadenas de caracteres (strings):
LODS, STOS, MOVS, SCAS, CMPS
3.10.1 El prefijo REP
3.11 Instrucciones para aritmtica BCD y ASCII.

UNIDAD IV ESTRUCTURA DE UN PROGRAMA EN LENGUAJE


ENSAMBLADOR
Tiempo: 18 Horas.

Objetivos:
Describir los componentes de un programa en ensamblador.
Establecer el procedimiento para la generacin de programas ejecutables.
Ensamblar, enlazar y ejecutar programas escritos en ensamblador.

Pgina | 5
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

Escribir programas en ensamblador de 32-bits utilizando el ensamblador


libre NASM (Netwide Assembler) y el compilador GCC y ejecutar
programas con el depurador OllyDbg.

Contenido:

4.1 Proceso de generacin de una aplicacin.


4.2 Lenguaje de mquina.
4.3 Estructura general de un programa en lenguaje ensamblador.
4.4 Sintaxis de un programa ensamblador.
4.5 Secciones o segmentos de un programa ensamblador
4.6 Directivas.
4.6.1 Directivas de inicio.
4.6.2 Directivas de finalizacin.
4.7 Definicin de datos
4.7.1 Definicin de datos inicializados.
4.7.2 Definicin de constantes.
4.7.3 Definicin de datos sin inicializar.
4.8 Cdigo del programa
4.9 El ensamblador NASM.
4.10 El compilador GCC.
4.11 Programas de ejemplo ensamblados con NASM y enlazados con GCC.
4.12 Ejecucin de programas utilizando el depurador OllyDbg.

UNIDAD V PROCEDIMIENTOS
Tiempo: 12 Horas

Objetivos:
Conocer como se llaman los procedimientos.
Entender el paso de parmetros a los mismos.

Contenido:
5.1 Introduccin a los procedimientos.
5.2 Definicin de un procedimiento o subprograma.
5.3 Instrucciones para llamadas a procedimientos:
5.3.1 CALL
5.3.2 RET
5.4 Convenciones para preservar los contenidos de los registros.
5.5 Estructura de un programa con llamada a procedimientos.
5.6 Consideraciones para el uso de procedimientos.

Pgina | 6
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

5.7 Paso de parmetros a un procedimiento:


5.7.1 por valor.
5.7.2 por referencia.
5.8 Variables locales y globales.

UNIDAD VI ENTRADA/SALIDA
Tiempo: 14 Horas

Objetivos:

Interaccin del ensamblador con lenguajes de alto nivel: nasm+C


Conocer el proceso de entrada/salida en ensamblador.

Utilizar funciones de alto nivel del lenguaje de programacin


C.

Uso de las funciones bsicas de entrada y salida: printf y


scanf.

Contenido:
6.1 Introduccin al manejo de entrada/salida en ensamblador.
6.2 Instrucciones bsicas de entrada/salida.
6.3 Uso de las funciones de alto nivel del lenguaje de
programacin C.
6.3.1 Uso de la funcin printf.
6.3.2 Uso de la funcin scanf.
6.4 Ejemplos de programas en ensamblador con el uso de
printf y scanf.
6.5 Macros

UNIDAD VII PUNTO FLOTANTE


Tiempo: 10 Horas

Objetivos:
Comprender la representacin y manipulacin de los nmeros en punto
flotante.

Pgina | 7
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

Realizar programas con instrucciones de punto flotante.

Contenido:
7.1. Representacin de nmeros en punto flotante.
7.2 Estndar de punto flotante IEEE-754
7.3. Aritmtica de punto flotante.
7.4. Los registros de punto flotante.
7.5. Instrucciones de punto flotante.
7.5.1Instrucciones de movimiento de datos
7.5.2 Instrucciones aritmticas bsicas
7.6. Programacin ensamblador en punto flotante.

6. METODOLOGA

Para el desarrollo de los contenidos se ha determinado los siguientes mtodos de


enseanza:
a) Clases de carcter terico-conceptual: Clases a cargo del
profesor a modo orientador, presentando los problemas, alternativas
de solucin con el correspondiente sustento terico. Su desarrollo se
apoyar en el uso de elementos auxiliares para la enseanza, como
pizarra y proyector de multimedia.

b) Desarrollo de Trabajos Prcticos: Los conceptos introducidos en


las clases tericas, especialmente los relativos al desarrollo de
algoritmos, rutinas y aplicaciones, tendrn una componente prctica
basada en la resolucin de problemas, que se desarrollarn en forma
individual o grupal.

c) Prcticas de Laboratorio: Se utilizar el laboratorio de cmputo


de la carrera para la realizacin de prcticas de programacin y
desarrollo de aplicaciones. Para dicho fin se utilizar el Ensamblador
Profesional NASM (Netwide Assembler). Se utilizarn las siguientes
herramientas: el ensamblador NASM (Netwide Assembler), el
compilador GCC (GNU Compiler Collection) y el debugger
OllyDbg.

7. CRONOGRAMA

Pgina | 8
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

SE 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1

MA 0 1 2 3 4 5 6 7 8

NA

Pres X

enta

cin
Uni X X X X

dad

I
Uni X X X X X

dad

II
Uni X X X

dad

III
Ex. X

Parc

ial I
Uni X X X

dad

IV
Uni X X

dad

Pgina | 9
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

V
Uni X X

dad

VI
Ex. X

Parc

ial

II
Uni X X

dad

VII
Ex. X

Fina

l
Defe X

nsa

8. SISTEMA DE EVALUACIN

La evaluacin de la materia se realizar siguiendo los parmetros que a


continuacin se describen.

ITEM DESCRIPCIN PROCENTAJE TEMAS


1 Primer examen parcial 25 % Unidades 1, 2 y 3

Pgina | 10
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

2 Segundo examen parcial 25 % Unidades 4 , 5 y 6


3 Prcticas y Laboratorio 20 %
4 Examen Final 30 % Todas las Unidades

1) Primer examen parcial


La evaluacin del primer examen parcial tendr 2 componentes: a) Terico,
conceptual b) Metodologa de anlisis.

2) Segundo examen parcial


La evaluacin del segundo examen parcial tendr 2 componentes: a)
Terico, conceptual b) Metodologa de programacin.

3) Examen final
La evaluacin del examen final consistir en la elaboracin, presentacin y
defensa de un programa de aplicacin en lenguaje ensamblador.

9. BIBLIOGRAFA

BIBLIOGRAFA BASICA

1.-) Ttulo: LENGUAJE ENSAMBLADOR PARA PC.

Autor: Paul A. Carter 18 de octubre de 2006


Pgina del autor: http://www.drpaulcarter.com
Se puede bajar libremente la traduccin en espaol.

2.-) Ttulo: THE INTEL MICROPROCESSORS.


8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Pentium
Pro Processor, Pentium II, Pentium III; Pentium 4, and Core2 with 64-
Bit Extensions
Architecture, Programming and Interfacing

Autor: Barry B. Bray


Octava Edicin
Editorial: Pearson Prentice Hall

Pgina | 11
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

3.-) Ttulo: INTRODUCTION TO ASSEMBLY LANGUAGE PROGRAMMING


FOR PENTIUM AND RISC PROCESSORS.

Autor: Sivarama P. Dandamudi


Segunda Edicin
Editorial: Springer Science+Business Media, Inc., 2005

4.-) Ttulo: ASEMBLY LANGUAGE FOR X86 PROCESSORS.

Autor: Kip Irvine


Sptima Edicin
Editorial: Prentice-Hall (Pearson Education), Marzo 2014

5.-) Ttulo: Modern X86 Asembly LanguageProgramming.


32-bit, 64-bit, SSE, and AVX
Autor: Daniel Kusswurm
Primera Edicin
Editorial: Apres, Diciembre 2014

Programacin bsica en Lenguaje ensamblador


http://www.learnassembler.com/

BIBLIOGRAFIA COMPLEMENTARIA

ABEL96 Abel Peter,, Lenguaje Ensamblador y Programacin para IBM PC y


Compatibles, Tercera Edicin, Prentice Hall Hispanoamericana S.A., Mxico,
1996.

MART90 Martnez Toms R., Lenguajes Ensambladores, Editorial Paraninfo,


S.A., Madrid (Espaa), 1990.

MURR87 Murray III William H. y Pappas Chris H., 80386/80286 Programacin en


Lenguaje Ensamblador, McGraw - Hill de Mxico, S. A., Mxico, 1987.

BIBLIOGRAFIA ADICIONAL

GODF91 Godfrey JT "Lenguaje Ensamblador para IBM PC," Prentice Hall, 1991.

Pgina | 12
Universidad Autnoma Gabriel Ren Moreno
FACULTAD DE INGENIERIA EN CIENCIAS
DE LA COMPUTACIN Y TELECOMUNICACIONES

HARL92 Harley Hahn Assembler Inside & Out, Osborne McGraw-Hill, USA 1992.

HENN95 Henessy, J.L., Patterson D.A. Organizacin y Diseo de


Computadores, McGraw-Hill Interamericana de Espaa, S.A. , Espaa , 1995.

MANO94 Mano, Morris, Arquitectura de Computadoras, Tercera Edicin,


Prentice-Hall Hispanoamericana, S.A. Mxico , 1994. (**)

MANO79 Mano, Morris, Lgica Digital y Diseo de Computadoras Editorial


Prentice-Hall Internacional, Colombia , 1979.

MANO91 Mano, Morris , Ingeniera Computacional - Diseo del Hardware


Prentice-Hall Hispanoamericana, S.A. Mxico, 1991.

MANO98 Mano, Morris y Kime, Charles Fundamentos de Diseo Lgico y


Computadoras Primera Edicin, Prentice-Hall Hispanoamericana, S.A. , 1998.

STAL00 Stallings William, Organizacin y Arquitectura de Computadores


Diseo para Optimizar Prestaciones, Quinta Edicin, Prentice Hall Iberia,
Madrid, 2000.

TANE00 Tanenbaum Andrew, Organizacin de Computadoras - Un Enfoque


Estructurado Cuarta Edicin, Prentice-Hall Hispanoamericana, S.A., Mexico,
2000.

TOCC96 Tocci Ronald J., Sistemas Digitales - Principios y Aplicaciones, Sexta


Edicin, Prentice Hall Hispanoamericana, S.A., Mexico , 1996. ( **)

Pgina | 13

You might also like