AÑO DE LA CONSOLIDACIÓN DEL MAR DE GRAU”
INTRODUCCION INTRODUCCION
Universidad Nacional de Piura
1
Ingeniería Informática
INDICE
Contenido ............................... ..................... ...................... ..................... ..................... ..................... ....................3 ..........3 INTRODUCCIÓN ..................... ............................... ..................... ..................... ...................... ..................... ..................... ............................ ................. 4 O!ETI"O#.................... ................................ ..................... ..................... ..................... ...................................... ............................ 5 $%RCO TEORICO..................... FUNCIONES DEL D.O.S:
5
PROGRAMAS NECESARIOS PARA LA CREACIÓN DE MÓDULOS 7 FUENTES EN ASSEMBLER ................................ ..................... ..................... ..................... ..................... ..................... ............................... ..................... 7 EDIT..................... ............................... ..................... ..................... ...................................................... ............................................ 7 T%#$&E'E..................... ................................ ..................... ..................... ..................... .......................................... ................................ 7 T(IN)&E'E..................... EDITOR:
8
................................ ..................... ..................... ..................... ..................... ................................ .....................1 1 DE#%RRO((O ..................... PASOS PARA ESCRIBIR Y EJECUTAR NUESTRO CÓDIGO ASSEMBLER 1 ENLAZADOR DEL PROGRAMA FUENTE
18
............................... ...................... ..................... ..................... ......................................... .............................. !7 I(IO*R%+I%....................
Universidad Nacional de Piura
,
Ingeniería Informática
INTRODUCCIÓN
El presente informe pretende dar a conocer los resultados obtenidos en la realización del segundo
laboratorio con lo que respecta al tema de programación en lenguaje
ensamblador enfocado en las +unciones del DO# (Sistema Operativo de Disco) del microprocesador 808 siendo estas funciones! base para el desarrollo para los pró"imos temas! teniendo como punto de partida todos los conocimientos teóricos impartidos durante las clases del curso de #icrocomputadoras $% En este laboratorio se quiere proporcionar a los estudiantes la estructura de cómo desarrollar un programa en bajo nivel con lenguaje ensamblador & guiarlos paso a paso en la ejecución del programa constatando dic'os cambios que surjan en el camino de la ejecución dentro de cada una de la partes de los $-dulos +uente en %ssem.ler utilizando los servicios que brindan las unciones del DOS & El editor usado en esta prctica de laboratorio fue el EDIT brindado por el DO# en la mquina! siendo este una 'erramienta de gran a&uda para poder conocer como es el funcionamiento de los programas que utilizan servicios que llaman al sistema en lenguaje ensamblador%
Universidad Nacional de Piura
/
Ingeniería Informática
O!ETI"O# O.0etivo *eneral
*rindar conocimiento acerca de las funciones del DOS & ejecución paso a paso de los programas en bajo nivel! 'aciendo uso de los #ódulos uente en +ssembler del microprocesador 808%
O.0etivos Es2ecíficos ,omprobar cómo funciona el proceso de las instrucciones en lenguaje ensamblador de los respectivos códigos aprendidos en clase mediante el editor &
+prender el manejo bsico del editor del DOS & Dar a conocer la realización de cómo se maneja el editor en cada uno de los módulos fuente en +ssembler%
Universidad Nacional de Piura
3
Ingeniería Informática
$%RCO TEORICO +UNCIONE# DE( D&O -El sistema operativo de disco controla sucesos de la mquina & se relaciona directamente con los componentes del 'ard.are% -El sistema operativo de disco tiene codificadas un conjunto de funciones de servicios del sistema denominadas funciones del DOS! por ejemplo/
#ervicios 4codigo de funci-n5 61 6, 67 68 6% ,% /D 36 3C
Efecto eer carcter de teclado con eco% $mprimir carcter en pantalla% $mprimir carcter en impresora% $mprimir cadena en pantalla% eer cadena desde el teclado Obtener fec'a del sistema% +brir un arc'ivo% Escribir en arc'ivo 1 dispositivo% 2erminar un proceso%
3ara usar una función se almacena el código correspondiente en el registro %9 & se ejecuta la instrucción de interrupción 45'
INT ,1:&
-I$PRE#IÓN DE C%DEN%# EN P%NT%((% / Universidad Nacional de Piura
7
Ingeniería Informática
a cadena debe estar en el segmento de datos
;/ marca el final de una cadena $
6
O
7
#
2
$
,
+
9
inal de la cadena
$nicio de la cadena
$O" %9< 68 $O" D'! $nicio de la cadena INT ,1:
3ermite aparecer la cadena en pantalla
=(ECTUR% DE C%DEN%# DE#DE E( TEC(%DO a
. ,aracteres ingresados
a 6:mero m"imo de caracteres a recibir% . Es usado por el S%O para colocar la cantidad de caracteres que realmente se ingresaron (sin enter)% uffer/ memoria temporal que almacena datos ingresados desde el teclado% *uffer ; a < enter < 4 b&tes de control
D' En este registro va la dirección del buffer
Si la cantidad m"ima es =0/
$O" $O" $O" INT
'< D' >te Ptr ?'@< /1d %9< 6%: ,1:
PRO*R%$%# NECE#%RIO# P%R% (% CRE%CIÓN DE $ÓDU(O# +UENTE# EN %##E$(ER EDIT
Universidad Nacional de Piura
A
Ingeniería Informática
Se va utilizar como sustituto del bloc de notas! &a que este nos permite conocer el n:mero de l>neas que se van editando & eso nos a&uda a la identificación de errores al momento de depurar! a diferencia del bloc de notas% Edit puede ser ejecutado! escribiendo en el 2*%d#o de di,o$o E(e2*t%# Co&%ndos en ?indo.s! & escribiendo @editA en el interfaz de l>nea de comandos % Edit
todav>a se inclu&e en las versiones posteriores de ?indo.s! como ?indo.s B3 ! ?indo.s Cista =4 bits! ?indo.s de =4 bits & ?indo.s 8 de =4 bits% +l ser una aplicación de DOS de 5 bits! no se ejecutar directamente en las versiones de ?indo.s de bits%
T%#$&E'E El turbo +ssembler es un paquete ensamblador principalmente destinado a la plataforma del $*# 3, & sus compatibles% ue la oferta de *orland en el mercado de 'erramientas de programación en lenguaje ensamblador para la familia de los microprocesadores "8% 3ara que un programa pueda ser interpretado por el ensamblador 2+S#! la condición necesaria es que el arc'ivo de este programa lleve la e"tensión %asm & el nombre del ar'ivo no debe tener mas de 8 caracteres! 2asm%e"e permite ensamblar el módulo fuente%
T(IN)&E'E Es el enlazador que permite combinar varios módulos objeto! realizando las cone"iones entre ellos &! finalmente! los convierte en módulo ejecutable de tipo %e"e% El enlazador permite el uso de librer>as de funciones & rutinas% 2$6F a diferencia de $6F! permite generar un fic'ero de tipo ,O# directamente de un %obj si se indica el parmetro 1t% $ncorpora un conjunto de rutinas% TASM.EXE
EDITOR
Edito#Edit DOS
TLINK.EXE
"#o$#%&% )*ente
En+%&',%do#
no&'"#o$.ASM E##o#e+
C%#/et%- 0ORLANC0IN Universidad Nacional de Piura
B
Ingeniería Informática
$ÓDU(O# +UENTE EN %##E$(ER -DE+INIR #E*$ENTO nombreSegmento SEG#E62 $nstrucción 5 $nstrucción 4 % % % nombreSegmento E6DS % % % E6D EtiquetaH$nicio -DIRECTI"%%- $ndicación al ensamblador sobre la forma en que se debe tratar algunos elementos del programa% Ina de estas directivas es la directiva +SSI#E +SSI#E
,S/nombreHSegmentoHcódigo
-ETIUET%#%- 6ombres simbólicos que representan las direcciones de memoria% 45
=CO$ENT%RIO#%- >neas de te"to que no pertenecen al programa & sirven para clasificar su funcionamiento% 45 E( #E*$ENTO DE D%TO# -CON#T%NTE#%- 6ombres simbólicos que no cambian a lo largo del tiempo% EJI Calor;500 Universidad Nacional de Piura
Ingeniería Informática
imite EJI 44K=0 men EJI @$ngrese valor9A -DEC(%R%CIÓN DE "%RI%(E# / D* (Define *&te) D? (Define ?ord) DD (Define Double)
8bits 5 bits =4 bits
Ejemplos/ " & z z5
D* D* D? D?
L 4= 4 L
sin valor inicial a la variable @"A de 8 bits valor inicial a la variable @&A de 8 bits valor inicial a la variable @zA de 5 bits no 'a& valor inicial para la variable @z5Ade 5 bits
-%RRE*(O# 4DUP5
%1
DF
76
arr
D
,6
No&'#e de,
%&%6o de 2%d% d%to
%&%6o de, %##e$,o 2%nt.
DUP4G5
DUP4A5
%,o# ini2i%, de todo+ ,o+ e,e&ent
2iene 500 b&tes! sin valor inicial
=C%DEN%# DE C%R%CTERE#&= Cienen a ser arreglos de b&tes! en la que cada elemento van a tener el código +S,$$ de lo que se va 'acer% men
D /6 DUP4,6:5
"ode&o+ tene# *n %##e$,o de 3 e,e&ento+ en ,% 9*e todo+ +*+ e,e&ento+ +on :%2;o+.
ASCCImen1 D
H9ola mundo;
men, D
Hienvenido<6%:< 6D:
O<+etde:*e,:e ,% di#e22i=n ini2i%, de
DE#%RRO((O
Universidad Nacional de Piura
8
Ingeniería Informática
P%#O# P%R% E#CRIIR L E!ECUT%R NUE#TRO CÓDI*O %##E$(ER 3ara editar nuestro programa ejecutable necesitamos realizar los siguientes pasos/
3aso 5/ 6os ubicamos en el escritorio! luego seleccionamos @mi 3,A! seleccionamos el disco , & creamos una nueva carpeta llamada micro1 donde guardaremos los arc'ivos que va&amos editando/
3aso 4/ Ejecutamos cmd%e"e para luego ingresar a la carpeta creada/
Universidad Nacional de Piura
16
Ingeniería Informática
3aso =/ $ngresamos a la carpeta creada desde el DOS con el comando cdM luego con el comando cd micro1
3aso / Cerificamos el contenido de la carpeta micro5 creada con el comando dir% ,omo se puede observar la carpeta esta vacia/
Universidad Nacional de Piura
11
Ingeniería Informática
3aso M/ $ngresamos desde aqu> a un editor para poder crear nuestro programa fuente% En este caso utilizaremos edit! el cual luego procederemos a ejecutar el código de nuestro programa/
3aso / En este editor se procedera posteriormente al ingreso de codigo respectivo/
Universidad Nacional de Piura
1,
Ingeniería Informática
3aso / Escribimos la lienas de codigo del respectivo programa siguiendo la estructura de los #odulos uente en +ssembler aprendidos en clase/
3aso 8/ Ina vez que 'emos ingresado los datos al editor! lo guardaremos con la e"tension &asm& En este caso pondremos como nombre del programa 2ro1&asm
Universidad Nacional de Piura
1/
Ingeniería Informática
a dirección de a carpeta es la correcta
El nombre del arc'ivo no debe e"ceder los 8 caracteres
3aso N/ Cerificamos el arc'ivo guardado con los comandos &a mencionados anteriormente/
PROCE#O DE EN#%$(%DO DE( PRO*R%$% +UENTE El proceso de ensamble consiste en la traducción del código fuente en código objeto & la generación de un arc'ivo intermedio %O* (objeto)! o modulo% Ina de las tareas del ensamblador es calcular el desplazamiento de cada elemento en el segmento de datos & de cada instrucción en el segmento de código! El ensamblador tambiPn crea un encabezado al frente del módulo %O* generadoQ parte del encabezado tiene información acerca de direcciones incompletas% El modulo% O* aun no esta en forma ejecutable%
Universidad Nacional de Piura
13
Ingeniería Informática
5% ,opiamos los arc'ivos de 2+S#%EBE R 2$6F%EBE a la carpeta creada micro5% os encontraremos en la carpeta *$6 del borlan c%
Universidad Nacional de Piura
17
Ingeniería Informática
4% Ejecutamos el tasm%e"e el cual es el programa ensamblador% Ina vez ejecutado este nos mostrara todos los posibles errores que puede tener nuestro programa%se corrigen & luego de vuelve a ejecutar el ensamblador tasm%e"e !el cual automticamente nos genera un arc'ivo con la e"tensión %obj
Universidad Nacional de Piura
1A
Ingeniería Informática
4En este caso :a> cero errores5
EN(%%DOR DE( PRO*R%$% +UENTE El paso de enlace implica convertir el modulo %O* en un módulo de código de mquina %EBE (ejecutable)% Ina de las tareas del enlazador es combinar los programas ensamblados en forma separada en un módulo
ejecutable%
1. Ejecutamos tlin%e"e el cual es el programa enlazador% Ina vez ejecutado este nos pedir unos arc'ivos ms que debemos copiar en nuestro directorio #icro $ (DP$I(O%D&ee & DPNI$EN&dll )% Se vuelve a ejecutar el enlaador T(IN)&ee & nos generara automticamente arc'ivo con la e"tensión &ee el cual ser &a nuestro programa ejecutable%
Universidad Nacional de Piura
1B
Ingeniería Informática
Universidad Nacional de Piura
1
Ingeniería Informática
!. O'+e#:%&o+ 9*e *n% :e> 2o/i%do+ ,o+ %#2?i:o+ @% &en2ion%do+ en ,% 2%#/et% &i2#o1
@% no ?%'# /#o',e&%+ /%#% e(e2*t%# n*e+t#o+
/#o$#%&%+.
Universidad Nacional de Piura
18
Ingeniería Informática
E0ercicio 1 Elaborar un módulo fuente en +ssembler que permita colocar en pantalla las letras ma&:sculas desde la + 'asta la T% -$ngresamos el código correspondiente en el editor/
-Observamos que una vez ingresado el código nuestro programa & verificado si no 'a& errores al ensamblarlo & enlazarlo! solo necesitamos teclear el nombre del programa 2ro1 & nos dar el resultado que queremos obtener%
Universidad Nacional de Piura
,6
Ingeniería Informática
E0ercicio , Elaborar un módulo fuente en +ssembler que reciba la nota de un alumno & muestre un mensaje en pantalla que indique si el alumno est +37O*+DO o DES+37O*+DO%
-$ngresamos el código correspondiente usando los módulos fuente aprendidos en clase/
En e+t% ,;ne% de 2=di$o +e 2o,o2% ,% not% en e+te 2%+o e+ &eno# % 11 o# ,o t%nto no+ d%# *n &en+% e de
Universidad Nacional de Piura
,1
Ingeniería Informática
=Caso contrario
En e+t% ,;ne% de 2=di$o +e 2o,o2% ,% not% en e+te 2%+o e+ &% o# *e 11 o# ,o t%nto no+ d%# *n &en+% e de
"#e:i%&ente +e de'e# $*%#d%#% ,o+ 2%&'io+ @ ,*e$o en+%&',%#e&o+ en,%>%#e&o+ 2on ASM LINB Universidad Nacional de Piura
,,
Ingeniería Informática
E0ercicio / Elaborar un programa en assembler que permita ingresar dos n:meros como cadena! convertirlo a n:mero! efectuar la suma & mostrar el resultado como una cadena en pantalla%
Se &ento
de
Se e+t%',e2en ,%+ 2%#%2te#;+ti2%+ de ,o+ %##e$,o+ A##e ,o Re2i'e
Con:ie#te
Se &ento
Universidad Nacional de Piura
,/
%
de
Ingeniería Informática
Se &ento
de
-DespuPs de 'aber ejecutado el código observamos que nos piden ingresar un n:mero despuPs de la palabra @6I#E7OA & un espacio! a continuación de otro mensaje con la misma lógica! & para obtener el resultado presionamos @E62E7A
Universidad Nacional de Piura
,3
Ingeniería Informática
CONC(U#IONE#
#ediante la realizacion de este laboratorio podemos concluir que la utilidad del editor del DOS! es mu& necesaria & se considera una 'erramienta mu& :til & potente para los estudiantes de la carrera de ingenier>a informtica &a que simula las operaciones de la programación en lenguaje ensamblador de los módulos fuente & por consecuente el mejor entendimiento del curso%
3ara una correcta ejecución de los programas desarrollados en +SSE#*E7 se necesita tener los arc'ivos/ 2$6F%EBE! 2+S#%EBE! D3#$O+D%EBE! D3#$#E#%D%
El editor de te"tos ED$2 nos permite conocer la cantidad de l>neas de código! la cantidad de columnas e incluso la l>nea en la que estamos ubicados para 'acer fcil la ubicación de un error cuando se compila el programa%
a programación en el lenguaje +ssembler suele ser complicado dado que no e"isten estructuras de programación! sin embargo nos sirve para entender cómo se ejecutan las instrucciones en bajo nivel%
Se comprobó que los ejercicios escritos en lenguaje +ssembler desarrollados en clase se compilan & ejecutan correctamente en un entorno de desarrollo apropiado para realizar programas en este lenguaje%
I(IO*R%+I%
#a&nard Fong% @unciones del Sistema Operativo DOSA% 5U Edición% 3ontificia Iniversidad ,atólica del 3er:! septiembre de 5N8N! p% 4%
Universidad Nacional de Piura
,7
Ingeniería Informática
SlideS'are%
TLink.exe %
50 de marzo del 4055% V,onsulta/ 0 de Octubre del
405MW% Disponible en/ 'ttp/11es%slides'are%net1GerardoGonzalez51tasm
SlideS'are%
#anual
de
$nstalación
del
2+S#%
Disponible
en/
'ttp/11es%scribd%com1doc1M0=801#anual-de-$nstalacionXscribd
Universidad Nacional de Piura
,A
Ingeniería Informática