Sesión de Laboratorio N° 02
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°2
Curso: Microcomputadoras I Responsables:
Castillo Berrú, Hítalo Merino Juárez, Manuel Antonio Sánchez Portocarrero, Gustavo
Docente: Ing. Víctor Hugo Valle Ríos Semestre: 2014-II
Piura, octubre del 2014 1
Sesión de Laboratorio N° 02
INDICE
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.
Lenguaje ensamblador ................................................................................................ 3
3.2.
El procesador Intel 8086 ............................................................................................. 4
3.3.
Tasm.exe ....................................................................................................................... 4
3.4.
Tlink.exe ....................................................................................................................... 5
PROGRAMAS DESARROLLADOS EN LABORATORIO .......................................... 5 4.1.
Primer Programa : Hola Mundo ............................................................................... 6
4.2.
Segundo Programa: Letras de la A-Z ........................................................................ 7
4.3.
Tercer Programa: Suma de los primeros n números naturales .............................. 8
5.
CONCLUSIONES ............................................................................................................. 10
6.
RECOMENDACIONES ................................................................................................... 10
7.
REFERENCIAS
................................................................................................................ 11
2
Sesión de Laboratorio N° 02
1. INTRODUCCIÓN En este informe se detallará lo realizado en uno de los laboratorios de cómputo de la Facultad de Ingeniería Industrial, el cual consistía en realizar programas en bajo nivel mediante el lenguaje Assembler que se realizaron en las sesiones de clase del curso de “Microcomputadoras I” usando un entorno de desarrollo. En este caso se desarrolló programas básicos en Assembler que se hicieron en las sesiones de aula y que se probaron en el laboratorio.
2. OBJETIVOS 2.1. Objetivo General Desarrollar ejercicios en Assembler a partir de los conocimientos adquiridos en clase.
2.2. Objetivos Específicos Hacer uso de las herramientas de programación en bajo nivel para
compilar nuestros programas fuente. Entender
el
funcionamiento
de
los
archivos
tasm.exe
(ensamblador) y tlink.exe (enlazador). Comprobar que los ejercicios desarrollados en clase funcionan
satisfactoriamente en laboratorio.
3. MARCO TEORICO 3.1.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 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
3
Sesión de Laboratorio N° 02 memoria y otras características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cier ta 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.2. 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
de
instrucciones’, en el cual se van almacenando de forma anticipada 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.
3.3.Tasm.exe El turbo Assembler es un paquete ensamblador principalmente destinado a la plataforma del IBM PC y sus compatibles. Fue la oferta de Borland en el mercado de herramientas de programación en lenguaje ensamblador para la familia de los microprocesadores x86. Para que un programa pueda ser interpretado por el ensamblador TASM, la condición necesaria es que el fichero de este programa lleve la extensión .asm y el nombre del fichero no debe ser mayor a 8 caracteres.
4
Sesión de Laboratorio N° 02
3.4.Tlink.exe Es el enlazador o linkeador que permite combinar varios módulos objeto, realizando las conexiones entre ellos y, finalmente, los convierte en modulo ejecutable de tipo .exe. El linkeador permite el uso de librerías de funciones y rutinas. TLINK a diferencia de LINK, permite generar un fichero de tipo COM directamente de un .obj si se indica el parámetro /t, lo que agiliza aún más el proceso.
4. PROGRAMAS DESARROLLADOS EN LABORATORIO Antes que nada debemos tener en cuenta cier tos aspectos: Nuestros programas en Assembler solo correrán en plataformas de 32
bits. Si se tiene un sistema operativo de 64 bits se optara por instalar una máquina virtual de 32 bits o un programa emulador del 8086. Se deberá crear una carpeta en el disco C (Ejm. C:\Micro1\) donde se
guardaran 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 exceder 8 caracteres.
5
Sesión de Laboratorio N° 02
4.1.Primer Programa : Hola Mundo Se desarrolló un programa en Assembler que imprima en pantalla la frase: “Hola Mundo”
datos segment cad db "Hola Mundo$" datos ends codigo segment assume cs:codigo, ds:datos inicio: mov ax,datos mov ds,ax mov ah,09h mov dx,offset cad int 21h fin: mov ah,4ch int 21h codigo ends end inicio
Guardamos el archivo con extensión .ASM
Compilamos el programa para detectar errores de sintaxis con el archivo TASM.
(Aquí se genera un archivo prog.obj)
6
Sesión de Laboratorio N° 02 Ahora enlazamos el archivo para generar el archivo .exe con el archivo
TLINK.(Aquí se generan dos archivos prog.map y prog.exe )
Ejecutamos el archivo prog.exe obteniendo:
4.2.Segundo Programa: Letras de la A-Z Se pide hacer un programa en Assembler que muestre en pantalla las letras de la A a la Z en mayúsculas
codigo segment assume cs:codigo inicio: mov ah,02h mov dl,41h comp: cmp dl,5Ah ja fin int 21h inc dl jmp comp fin: mov ah,4Ch int 21h codigo ends end inicio
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 7
Sesión de Laboratorio N° 02 Ejecutamos el archivo letras.exe obteniendo:
4.3.Tercer Programa: Suma de los primeros n números naturales Se pide hacer un programa en Assembler que muestre en pantalla la suma de los n primeros números naturales (En este caso serán los 50 primeros números)
datos segment msje db "La suma es",0Ah,0Dh,'$' datos ends codigo segment assume cs:codigo, ds:datos inicio: mov ax,datos mov ds,ax mov si,0 mov ax,0 mov cx,1 comp: cmp cx,50 ja dividir add ax,cx inc cx jmp comp dividir: mov cx,10 mov dx,0 div cx mov [si],dl inc si cmp ax,0 ja dividir mov ah, 09h mov dx, offset msje int 21h
8
Sesión de Laboratorio N° 02 imprimir: dec si mov ah,02h mov dl,[si] add dl,30h int 21h cmp si,0 ja imprimir fin: mov ah,4ch int 21h codigo ends end inicio
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 .exe obteniendo:
9
Sesión de Laboratorio N° 02
5. CONCLUSIONES Se verificó que los programas en Assembler realizados en clase y en papel se
compilaban y ejecutaba 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 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.
10
Sesión de Laboratorio N° 02
7. REFERENCIAS http://www.slideshare.net/GerardoGonzalez1/tasm.
“Conceptos
sobre
tasm.exe y tlink.exe”, Páginas 4, 5, 8 y 9 http://es.wikipedia.org/wiki/Lenguaje_ensamblador
“Definición
de
Lenguaje ensamblador” http://es.slideshare.net/MCRBTALLER/procesador-intel-8086
“El
Procesador Intel 8086”, Páginas 1 y 2
11