UNIVERSIDAD NACIONAL DE PIURA FACULTAD DE INGENIERÍA INDUSTRIAL ESCUELA PROFESIONAL DE INGENIERÍA INFORMÁTICA “Año de la Promoción de la Industria Responsable y del Compromiso Climático”
Informe de Laboratorio N°4 Curso: Microcomputadoras I Responsables:
Castillo Berrú, Hítalo Holguín Panta, Jorge Nicolás Jiménez Cáceres Cristopher
Docente: Ing. Víctor Hugo Valle Ríos Semestre: 2014-II
Piura, noviembre del 2014
1
ÍNDICE 1.
INTRODUCCIÓN ................................................................................................................ 3
2. OBJETIVOS ............................................................................................................................. 3
3.
4.
2.1.
Objetivo General ........................................................................................................... 3
2.2.
Objetivos Específicos .................................................................................................... 3
MARCO TEORICO .............................................................................................................. 3 3.1.
Rutina ............................................................................................................................ 3
3.2.
Lenguaje ensamblador ................................................................................................... 3
3.3.
El procesador Intel 8086 ............................................................................................... 4
PROGRAMAS DESARROLLADOS EN LABORATORIO ............................................... 5 4.1.
Programa 1: Programa que hace uso de dos segmentos de código. .............................. 6
4.2.
Programa 2: Invertir cadena .......................................................................................... 7
4.3.
Programa 3: Obtener el mayor número de un arreglo ................................................... 8
5.
CONCLUSIONES .............................................................................................................. 11
6.
RECOMENDACIONES ..................................................................................................... 11
7.
REFERENCIAS .................................................................................................................. 12
2
1. INTRODUCCIÓN En este informe se detallará lo realizado en la cuarta sesión de laboratorio, el cual consistió en realizar programas en bajo nivel mediante el lenguaje Assembler usando un entorno de desarrollo. Para realizar los programas se hizo uso de rutinas y se trabajó con dos segmentos de código (rutinas lejanas).
2. OBJETIVOS 2.1. Objetivo General Implementar los ejercicios desarrollados en clase haciendo uso de rutinas para comprobar su funcionamiento.
2.2. Objetivos Específicos Hacer uso de las herramientas de programación en bajo nivel para compilar nuestros programas fuente. Entender el uso de rutinas cercanas y lejanas.
3. MARCO TEORICO 3.1. Rutina Una rutina o también llamada subrutina es una porción de programa claramente definida que cumple una función específica y a la cual se puede llamar desde cualquier parte del programa principal. Una rutina es equivalente a un método en un lenguaje de alto nivel. Al igual que los métodos, las rutinas también reciben parámetros, pero estos se deben apilar antes de hacer el llamado. Las rutinas pueden ser cercanas o lejanas, las lejanas se encuentran en otro segmento de código.
3.2.Lenguaje ensamblador El lenguaje ensamblador o Assembler, es un lenguaje de programación de bajo nivel para las computadoras, microprocesadores, microcontroladores, y otros circuitos programables. Implementa una representación simbólica de los códigos de
máquina binarios
y
otras
constantes necesarias para
programar
una arquitectura dada de CPU y constituye la representación más directa 3
del código máquina específico para cada arquitectura legible por un programador. Esta representación es usualmente definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta arquitectura de computador física (o virtual). Esto está en contraste con la mayoría de los lenguajes de programación de alto nivel, que idealmente son portátiles.
3.3. El procesador Intel 8086 El 8086 es procesador diseñado para trabajar con lenguajes de alto y bajo nivel, disponiendo de un soporte hardware con el que programas escritos en dichos lenguajes ocupan un pequeño espacio de código y pueden ejecutarse a gran velocidad.
Algunas características del 8086: El 8086 dispone de instrucciones especiales para el tratamiento de cadenas de caracteres. Dispone
de
un
conjunto
de
registros,
denominados
„cola
instrucciones‟, en el cual se van almacenando de forma anticipada
de
los
códigos de las instrucciones, consiguiendo que este aumente su velocidad de trabajo. Los registros del 8086 tienen una misión específica, por lo que se podría decir que cada uno de ellos tiene su propia personalidad, aunque varios comparten tareas comunes. Las 20 líneas del bus de direcciones solo permiten direccionar una memoria de 1 Megabyte.
4
4. PROGRAMAS DESARROLLADOS EN LABORATORIO Antes de implementar nuestros programas debemos tener en cuenta lo siguiente: Nuestros programas en Assembler solo se funcionarán en plataformas de 32 bits. Si se tiene un Sistema Operativo de 64 bits se deberá instalar una máquina virtual de 32 bits o un programa emulador del 8086. Debemos crear una carpeta en el disco C (Ej. C:\Micro\) donde se almacenarán los archivos que se generen. Se debe tener en la carpeta que almacena nuestros programas 4 archivos muy importantes: TASM.EXE, TLINK.EXE, DPMILOAD.EXE y DPMIMEM.DLL. Estos archivos los podemos encontrar dentro del paquete de Borlan C.
Al guardar nuestro programa el nombre no debe contener más de 8 caracteres.
5
4.1. Programa 1: Programa que hace uso de dos segmentos de código. Se desarrolló un programa en Assembler que imprima un mensaje que indique en que segmento de código se encuentra en cada momento, para lo cual se creó dos segmentos de código. Código del Programa:
Guardamos el archivo con extensión .ASM
Compilamos el programa para detectar errores de sintaxis con el archivo TASM. (Aquí se genera un archivo con extensión .obj). Ahora enlazamos el archivo para generar el archivo .exe con el archivo TLINK.(Aquí se generan dos archivos .map y .exe )
6
Ejecutamos el archivo mensaj.exe obteniendo:
4.2. Programa 2: Invertir cadena Se pidió hacer un programa en Assembler que permita ingresar una cadena y muestre dicha cadena invertida haciendo uso de rutinas. Código del Programa:
7
De la misma manera guardamos el archivo con extensión .ASM Compilamos el programa para detectar errores de sintaxis con el archivo TASM. Ahora enlazamos el archivo para generar el archivo . exe con el archivo TLINK Ejecutamos el archivo cadena.exe obteniendo:
4.3.Programa 3: Obtener el mayor número de un arreglo Se pidió hacer un programa en Assembler que muestre el mayor de los números de un arreglo. El programa hace uso de rutina con parámetros ingresados a través de la pila. 8
Código del programa
De la misma manera guardamos el archivo con extensión .ASM Compilamos el programa para detectar errores de sintaxis con el archivo TASM. Ahora enlazamos el archivo para generar el archivo .exe con el archivo TLINK. 9
Ejecutamos el archivo .exe obteniendo:
10
5. CONCLUSIONES El uso de rutinas permite simplificar nuestro programa, pues ayudan a que nuestro código sea más limpio. Se comprobó que los programas en Assembler realizados en las sesiones de clase funcionaban correctamente en un entorno de desarrollo apropiado para realizar programas en bajo nivel. La programación en bajo nivel suele ser muy tediosa dado que no existen estructuras de programación, pero nos sirve para entender cómo se manejan los archivos internos de la computadora.
6. RECOMENDACIONES Al implementar una rutina ésta debe cumplir una tarea en específico y ser general, es decir, que debe funcionar para cualquier situación para la que ha sido desarrollada. Dado que en la mayoría de computadoras de la actualidad no se puede usar el compilador y enlazador de las versiones de Borland, se recomienda utilizar programas emuladores del 8086 alternativos, tales como: DOS Box 0.74, Emu8086 y otros emuladores muy fáciles de utilizar. También se puede optar por instalar una máquina virtual de 32 bits capaz de trabajar bajo esta plataforma.
11
7. REFERENCIAS -
“Definición de rutina”. Obtenido de:
http://www.utp.edu.co/~eduque/arquitec/RUTINAS.PDF -
“Definición de Lenguaje ensamblador”. Obtenido de:
http://es.wikipedia.org/wiki/Lenguaje_ensamblador -
“El
Procesador
Intel
8086”,
Páginas
1
y
2.
Obtenido
de
:http://es.slideshare.net/MCRBTALLER/procesador-intel-8086
12