SlideShare una empresa de Scribd logo
1 de 13
Lenguaje Ensamblador
Procesador Intel 8086
Facultad de ciencias de la administración
Carrera: Licenciatura en Sistemas
Cátedra: Arquitectura de Computadoras
Año: 2015
Profesor: Ruiz, José María
Procesador Intel 8086
El 8 de Junio de 1978, Intel presentó al público el chip 8086
procesador que se convertiría en la base para el actual
conjunto de instrucciones de arquitectura x86, dando inicio a
la historia moderna de las CPUs de propósito general.
Registros
Lenguaje ensamblador
Si una persona quisiera desarrollar un programa para un microprocesador se le
dificultaría mucho pensar las instrucciones en términos de números ya que
ésta no es la forma natural del pensamiento humano, por lo que es más
conveniente pensar el programa en un lenguaje simbólico llamado
Ensamblador. En este lenguaje, una instrucción no está representada por un
número, sino que se representa por una palabra corta que nos dan una idea
muy clara de la instrucción que se trata, a esta palabra se le conoce como
Mnemónico.
Operaciones
Si tomamos una instrucción en un lenguaje de alto nivel
ejemplo: X = X + Y
Para realizar esto en lenguaje maquina deberíamos
utilizar un serie de instrucciones.
Suponiendo que X se encuentra en la posición 513 e Y en la
514
1 - Cargar un registro con el contenido de una posición de
memoria 513
2 - Sumar al registro el contenido de otra posición de
memoria 514
3 - Grabar el contenido del resultado en la posición 513
Lenguaje ensamblador
 Cada microprocesador tiene su propio lenguaje maquina.
Es usado principalmente porque hay aplicaciones o programas
que deben tratar directamente con los registros de la máquina,
la memoria, dispositivos de E/S, etc.
La traducción de los nemónicos a código máquina entendible
por el CPU la lleva a cabo un programa ensamblador.
Representación de las instrucciones
Los operandos también se representan simbólicamente.Ejemplo :
ADD sumar
SUB restar
ADD C , B
Donde se esta diciendo que se quiere sumar el contenido del
operando C con el del operando B
ADD C
Sumar C con el acumulador y depositarlo en el acumulador
¿La CPU puede interpretar y ejecutar estos códigos?
No. Debemos utilizar un programa que convierta los codOp y las
referencias a operandos a código binario.
Tipos de Operaciones
 De transferencia de datos. Ej. MOV A,B
 Operaciones aritméticas y lógicas. Ej. ADD A,B
 De salto. Ej. JMP
 De llamada y retorno a subrutinas. Ej. CALL
 De E/S. Ej. OUT
Interrupciones
 Una interrupción es un evento no programado
que altera el flujo normal de ejecución de una
tarea.
 La rutina de interrupción se ejecuta y por lo
regular regresa el control al procedimiento que
fue interrumpido, el cual entonces reasume su
ejecución.
Comparación
SITUACIONES IDENTIFICADAS
a) Cada artefacto sonó de diferente manera, o
sea, pudo ser identificado entre otros
dispositivos.
b) Se dejo en pausa una tarea sin perderla.
c) Se preservo la información de la primera
tarea, por lo tanto cuando retomó la
conversación sabía de que estaba hablando.
;------------- Ejer1 ---------------------------------------
; Muestra el mensaje en pantalla 'Arquitectura de Computadoras'
;-----------------------------------------------------------
.MODEL SMALL
.STACK 100h
.DATA
TEXTO DB 'Arquitectura de Computadoras',CR,LF, '$'
; El carácter '$' indica fin de string
CR EQU 13 ; Agrega carácter enter al texto
LF EQU 10 ; Agrega carácter salto de línea
.CODE
inicio:
MOV AX, @DATA ;Carga en AX la dirección del segmento datos
MOV DS,AX ;Copia AX a DS
LEA DX,TEXTO ;carga la dirección del inicio de TEXTO en el
;registro DX. También se puede hacer MOV DX,Offset TEXTO
MOV AH,9 ;parámetro para mostrar por pantalla
INT 21h
MOV AH,4ch ;parámetro para retorno al Sistema Operativo
INT 21h
END inicio
Bibliografía
 Murdoca, Miles J.; Heuring, Vincent P.
Principios de Arquitectura de Computadoras,
1ra. edición. Buenos Aires, Editorial Pearson
Education, 2002.
 Stallings, William.
Organización y Arquitectura de
Computadores, 5ta. Edición. Madrid, Editorial
Prentice Hall, 2000.

Más contenido relacionado

La actualidad más candente

Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasYESENIA CETINA
 
Parte 4 Máquinas De Turing
Parte 4  Máquinas De  TuringParte 4  Máquinas De  Turing
Parte 4 Máquinas De TuringRicardo Quintero
 
Diagrama de bloques de un computador
Diagrama de bloques de un computadorDiagrama de bloques de un computador
Diagrama de bloques de un computadorJose Diaz Silva
 
Sintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensambladorSintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensambladornaye torres
 
Entrada/Salida de Sistemas Operativos
Entrada/Salida de Sistemas OperativosEntrada/Salida de Sistemas Operativos
Entrada/Salida de Sistemas OperativosKarina Rivra
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasYESENIA CETINA
 
Mapa Conceptual del Lenguaje C
Mapa Conceptual del Lenguaje CMapa Conceptual del Lenguaje C
Mapa Conceptual del Lenguaje CCésar Ojeda
 
Generacion codigomaquina
Generacion codigomaquinaGeneracion codigomaquina
Generacion codigomaquinatre_na_gil
 
Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfazjomapuga
 
Programación de microcontrolador
Programación de microcontroladorProgramación de microcontrolador
Programación de microcontroladorTaqui Wajuyat Flor
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasYESENIA CETINA
 
Arquitectura de Von Neumann
Arquitectura de Von NeumannArquitectura de Von Neumann
Arquitectura de Von Neumannvictor medra
 
Sistemas en tiempo real.
Sistemas en tiempo real.Sistemas en tiempo real.
Sistemas en tiempo real.Jesus Baptista
 

La actualidad más candente (20)

Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Parte 4 Máquinas De Turing
Parte 4  Máquinas De  TuringParte 4  Máquinas De  Turing
Parte 4 Máquinas De Turing
 
Programación de microcontroladores
Programación de microcontroladoresProgramación de microcontroladores
Programación de microcontroladores
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
Diagrama de bloques de un computador
Diagrama de bloques de un computadorDiagrama de bloques de un computador
Diagrama de bloques de un computador
 
Sintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensambladorSintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensamblador
 
Entrada/Salida de Sistemas Operativos
Entrada/Salida de Sistemas OperativosEntrada/Salida de Sistemas Operativos
Entrada/Salida de Sistemas Operativos
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Mapa Conceptual del Lenguaje C
Mapa Conceptual del Lenguaje CMapa Conceptual del Lenguaje C
Mapa Conceptual del Lenguaje C
 
ARQUITECTURA RISC
ARQUITECTURA RISCARQUITECTURA RISC
ARQUITECTURA RISC
 
Generacion codigomaquina
Generacion codigomaquinaGeneracion codigomaquina
Generacion codigomaquina
 
Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfaz
 
C Programming - Refresher - Part I
C Programming - Refresher - Part I C Programming - Refresher - Part I
C Programming - Refresher - Part I
 
Microprocesadores
MicroprocesadoresMicroprocesadores
Microprocesadores
 
Entrada y Salida
Entrada y SalidaEntrada y Salida
Entrada y Salida
 
Programación de microcontrolador
Programación de microcontroladorProgramación de microcontrolador
Programación de microcontrolador
 
Modelos risc y cisc
Modelos risc y ciscModelos risc y cisc
Modelos risc y cisc
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Arquitectura de Von Neumann
Arquitectura de Von NeumannArquitectura de Von Neumann
Arquitectura de Von Neumann
 
Sistemas en tiempo real.
Sistemas en tiempo real.Sistemas en tiempo real.
Sistemas en tiempo real.
 

Destacado (20)

Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Unidad 1 interfaz
Unidad 1 interfazUnidad 1 interfaz
Unidad 1 interfaz
 
Tipos De Lenguajes
Tipos De LenguajesTipos De Lenguajes
Tipos De Lenguajes
 
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURGRelatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
 
Lenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipeLenguaje de ensamblador daniel romo 9 a -san felipe
Lenguaje de ensamblador daniel romo 9 a -san felipe
 
Ots 2014 2 a5
Ots 2014 2 a5Ots 2014 2 a5
Ots 2014 2 a5
 
Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador Nivel de lenguaje ensamblador
Nivel de lenguaje ensamblador
 
Lenguajeensamblador
LenguajeensambladorLenguajeensamblador
Lenguajeensamblador
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Mipag web
Mipag webMipag web
Mipag web
 
Lengujes de 2 generacion
Lengujes de 2 generacionLengujes de 2 generacion
Lengujes de 2 generacion
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
programa 1 en lenguaje ensamblador
programa 1 en lenguaje ensambladorprograma 1 en lenguaje ensamblador
programa 1 en lenguaje ensamblador
 
Lenguaje de ensamblador
Lenguaje de ensambladorLenguaje de ensamblador
Lenguaje de ensamblador
 
5154 Tema3 Jose Rojas
5154 Tema3 Jose Rojas5154 Tema3 Jose Rojas
5154 Tema3 Jose Rojas
 
Data segment
Data segmentData segment
Data segment
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Manejo de archivo
Manejo de archivoManejo de archivo
Manejo de archivo
 
Emulador 8086.
Emulador 8086.Emulador 8086.
Emulador 8086.
 

Similar a Lenguaje ensamblador

Conceptos básicos
Conceptos básicosConceptos básicos
Conceptos básicospablo
 
El Procesador o CPU 2
El Procesador o CPU 2El Procesador o CPU 2
El Procesador o CPU 2Jorge Pulido
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00Car_00_01
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensambladorCar_00_01
 
Mi Lenguaje de Programacion
Mi Lenguaje de ProgramacionMi Lenguaje de Programacion
Mi Lenguaje de Programacionmel_15
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]Jalil Segura
 
Programación Y Simulación De Robot SCARA, documento
Programación Y Simulación De Robot SCARA, documentoProgramación Y Simulación De Robot SCARA, documento
Programación Y Simulación De Robot SCARA, documentoBronson Duhart
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensambladorjuan1993are
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensambladorjuan1993are
 
Intro programacion conceptos_2012
Intro programacion conceptos_2012Intro programacion conceptos_2012
Intro programacion conceptos_2012Rafael Pérez
 
Arquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzadosArquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzadosDIEGO BAROJA
 

Similar a Lenguaje ensamblador (20)

Conceptos básicos
Conceptos básicosConceptos básicos
Conceptos básicos
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
 
El Procesador o CPU 2
El Procesador o CPU 2El Procesador o CPU 2
El Procesador o CPU 2
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Evolución de la programación
Evolución de la programaciónEvolución de la programación
Evolución de la programación
 
Mi Lenguaje de Programacion
Mi Lenguaje de ProgramacionMi Lenguaje de Programacion
Mi Lenguaje de Programacion
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Visual basic terminado[1]
Visual basic terminado[1]Visual basic terminado[1]
Visual basic terminado[1]
 
Ec2
Ec2Ec2
Ec2
 
Programación Y Simulación De Robot SCARA, documento
Programación Y Simulación De Robot SCARA, documentoProgramación Y Simulación De Robot SCARA, documento
Programación Y Simulación De Robot SCARA, documento
 
Introduccion al assembler
Introduccion al assemblerIntroduccion al assembler
Introduccion al assembler
 
Introduccion al assembler[1]
Introduccion al assembler[1]Introduccion al assembler[1]
Introduccion al assembler[1]
 
TADS.PDF
TADS.PDFTADS.PDF
TADS.PDF
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Curso MATLAB
Curso MATLABCurso MATLAB
Curso MATLAB
 
Intro programacion conceptos_2012
Intro programacion conceptos_2012Intro programacion conceptos_2012
Intro programacion conceptos_2012
 
Arquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzadosArquitecturas de ordenadores y compiladores cruzados
Arquitecturas de ordenadores y compiladores cruzados
 
Clasificacion de los lenguajes abel
Clasificacion de los lenguajes abelClasificacion de los lenguajes abel
Clasificacion de los lenguajes abel
 

Último

linea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añoslinea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añosMaraPazCrdenas
 
9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf sociales9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf socialesJhonathanRodriguez10
 
Home Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todosHome Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todosDebora Gomez Bertoli
 
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVO
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVOPERFIL SECRETARIAL - SECRETARIADO EJECUTIVO
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVOAdrianaBernal82
 
Presentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptPresentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptCARLOSAXELVENTURAVID
 
Red WAN que es una red WAN? para que sirve?.pptx
Red WAN que es una red WAN? para que sirve?.pptxRed WAN que es una red WAN? para que sirve?.pptx
Red WAN que es una red WAN? para que sirve?.pptxcorteztabo1004
 
PLANIFICACION ANUAL , año 2024. nivel primaria
PLANIFICACION ANUAL , año 2024. nivel primariaPLANIFICACION ANUAL , año 2024. nivel primaria
PLANIFICACION ANUAL , año 2024. nivel primariajosevilla696981
 
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptxRosiClaros
 

Último (8)

linea de tiempo television y su avance en los años
linea de tiempo television y su avance en los añoslinea de tiempo television y su avance en los años
linea de tiempo television y su avance en los años
 
9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf sociales9-Sociales-Colombia siglo XX.pdf sociales
9-Sociales-Colombia siglo XX.pdf sociales
 
Home Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todosHome Assistant - Un Hub para controlarlos a todos
Home Assistant - Un Hub para controlarlos a todos
 
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVO
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVOPERFIL SECRETARIAL - SECRETARIADO EJECUTIVO
PERFIL SECRETARIAL - SECRETARIADO EJECUTIVO
 
Presentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.pptPresentación Materiales para la Construcción.ppt
Presentación Materiales para la Construcción.ppt
 
Red WAN que es una red WAN? para que sirve?.pptx
Red WAN que es una red WAN? para que sirve?.pptxRed WAN que es una red WAN? para que sirve?.pptx
Red WAN que es una red WAN? para que sirve?.pptx
 
PLANIFICACION ANUAL , año 2024. nivel primaria
PLANIFICACION ANUAL , año 2024. nivel primariaPLANIFICACION ANUAL , año 2024. nivel primaria
PLANIFICACION ANUAL , año 2024. nivel primaria
 
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
644400074-LA-CONSOLIDACION-DE-LA-REPUBLICA-OLIGARQUICA-pdf.pptx
 

Lenguaje ensamblador

  • 1. Lenguaje Ensamblador Procesador Intel 8086 Facultad de ciencias de la administración Carrera: Licenciatura en Sistemas Cátedra: Arquitectura de Computadoras Año: 2015 Profesor: Ruiz, José María
  • 2. Procesador Intel 8086 El 8 de Junio de 1978, Intel presentó al público el chip 8086 procesador que se convertiría en la base para el actual conjunto de instrucciones de arquitectura x86, dando inicio a la historia moderna de las CPUs de propósito general.
  • 4. Lenguaje ensamblador Si una persona quisiera desarrollar un programa para un microprocesador se le dificultaría mucho pensar las instrucciones en términos de números ya que ésta no es la forma natural del pensamiento humano, por lo que es más conveniente pensar el programa en un lenguaje simbólico llamado Ensamblador. En este lenguaje, una instrucción no está representada por un número, sino que se representa por una palabra corta que nos dan una idea muy clara de la instrucción que se trata, a esta palabra se le conoce como Mnemónico.
  • 5. Operaciones Si tomamos una instrucción en un lenguaje de alto nivel ejemplo: X = X + Y Para realizar esto en lenguaje maquina deberíamos utilizar un serie de instrucciones. Suponiendo que X se encuentra en la posición 513 e Y en la 514 1 - Cargar un registro con el contenido de una posición de memoria 513 2 - Sumar al registro el contenido de otra posición de memoria 514 3 - Grabar el contenido del resultado en la posición 513
  • 6. Lenguaje ensamblador  Cada microprocesador tiene su propio lenguaje maquina. Es usado principalmente porque hay aplicaciones o programas que deben tratar directamente con los registros de la máquina, la memoria, dispositivos de E/S, etc. La traducción de los nemónicos a código máquina entendible por el CPU la lleva a cabo un programa ensamblador.
  • 7. Representación de las instrucciones Los operandos también se representan simbólicamente.Ejemplo : ADD sumar SUB restar ADD C , B Donde se esta diciendo que se quiere sumar el contenido del operando C con el del operando B ADD C Sumar C con el acumulador y depositarlo en el acumulador ¿La CPU puede interpretar y ejecutar estos códigos? No. Debemos utilizar un programa que convierta los codOp y las referencias a operandos a código binario.
  • 8. Tipos de Operaciones  De transferencia de datos. Ej. MOV A,B  Operaciones aritméticas y lógicas. Ej. ADD A,B  De salto. Ej. JMP  De llamada y retorno a subrutinas. Ej. CALL  De E/S. Ej. OUT
  • 9. Interrupciones  Una interrupción es un evento no programado que altera el flujo normal de ejecución de una tarea.  La rutina de interrupción se ejecuta y por lo regular regresa el control al procedimiento que fue interrumpido, el cual entonces reasume su ejecución.
  • 11. SITUACIONES IDENTIFICADAS a) Cada artefacto sonó de diferente manera, o sea, pudo ser identificado entre otros dispositivos. b) Se dejo en pausa una tarea sin perderla. c) Se preservo la información de la primera tarea, por lo tanto cuando retomó la conversación sabía de que estaba hablando.
  • 12. ;------------- Ejer1 --------------------------------------- ; Muestra el mensaje en pantalla 'Arquitectura de Computadoras' ;----------------------------------------------------------- .MODEL SMALL .STACK 100h .DATA TEXTO DB 'Arquitectura de Computadoras',CR,LF, '$' ; El carácter '$' indica fin de string CR EQU 13 ; Agrega carácter enter al texto LF EQU 10 ; Agrega carácter salto de línea .CODE inicio: MOV AX, @DATA ;Carga en AX la dirección del segmento datos MOV DS,AX ;Copia AX a DS LEA DX,TEXTO ;carga la dirección del inicio de TEXTO en el ;registro DX. También se puede hacer MOV DX,Offset TEXTO MOV AH,9 ;parámetro para mostrar por pantalla INT 21h MOV AH,4ch ;parámetro para retorno al Sistema Operativo INT 21h END inicio
  • 13. Bibliografía  Murdoca, Miles J.; Heuring, Vincent P. Principios de Arquitectura de Computadoras, 1ra. edición. Buenos Aires, Editorial Pearson Education, 2002.  Stallings, William. Organización y Arquitectura de Computadores, 5ta. Edición. Madrid, Editorial Prentice Hall, 2000.