Laboratorio#3 OAC
Laboratorio#3 OAC
Laboratorio#3 OAC
PROFESOR:
SERGIO A. COTES M.
LABORATORIO #3
TURBO ASSEMBLER
INTEGRANTES:
GRUPO 1IL-132
3er AÑO – 2do SEMESTRE
26 DE SEPTIEMBRE DE 2017
Grupos de trabajo:
Se podrá trabajar individualmente, pero el informe se presentará por grupo de máximo cinco
integrantes. Los mismos del grupo definido para los proyectos. Se requiere que el informe sea el resultado
de un proceso de análisis, investigación y discusión del tema.
Objetivos:
Procedimiento:
1. Vaya al directorio raíz de Windows y cree una carpeta llamada Lab3. Salve allí los programas TASM y
TLINK de assembler. Guarde en esta carpeta todos los archivos a crear y utilizar de este laboratorio.
2. Utilice el Bloc de Notas para introducir el programa de assembler. ( ver al final… )
3. Salve el programa con extensión (.asm) dentro de su directorio Lab3.
4. Vaya al DOS y ubíquese en el directorio raíz. Luego, diríjase al directorio donde grabó su programa.
Para eso utilice el comando:
cd.. enter ... ( directorio raíz )
cd lab3 enter ... ( carpeta lab3 )
5. Utilice el Turbo Assembler para compilar su programa: Debe tener los dos archivos TASM y TLINK
instalados en su PC en dicho directorio o carpeta y su programa fuente ( nombre.asm )
Formato:
TASM nombre del programa.asm / l ( l es para un listado generado que tendrá extensión .lst )
Nota: Puede ver el listado en WORD u otro editor. Vaya a Windows y verifique el listado. El archivo
con extensión (.lst), no el de extensión ( .asm ). Si tiene errores debe ir al Bloc de Notas a corregirlos,
salvar y repetir el proceso.
Si todo está correcto debe contener en su directorio algo “parecido” a esto: ( no importa los tamaños )
Verifique con el comando de DOS dir, para ver que hay en su directorio. cls, limpia la pantalla en DOS.
Ahora... Antes de hacer otra cosa, revise y analice su programa. Este es el mismo programa creado en los
laboratorios anteriores, con la diferencia de que ahora usamos variables y nosotros NO decidimos dónde se
guarda en memoria, sino el sistema operativo. Verifique el CS, DS, SS y ES.
Revise la estructura del programa, los segmentos, variables y registros, procedimientos e interrupciones.
Después de “comprender” la estructura de su programa, vuelva al DOS.
Turbo assembler le crea un programa ejecutable (.exe), el cual también puede revisarse con DEBUG,
aunque no es tan sencillo ubicar todas las instrucciones porque se agregan otras…resultado del compilador.
6. Ejecute su programa: Escriba el nombre y teclee “enter”. Qué respuesta obtuvo ? Por qué sucede
esto? Punto (A)
7. Escriba el comando DEBUG nombre del programa.exe y presione “enter”. Esto carga su programa
para verificar su ejecución. Ahora vamos a seguirlo paso a paso…
8. Escriba “r” y presione “enter”. Se mostrarán los 8 registros generales del procesador, los registros de
segmento, el registro IP y el registro de estado. Tome nota del estado de los registros, compare este
resultado con el del primer y segundo laboratorio. Mencione las diferencias. Punto (B)
9. Su programa inicia en el desplazamiento 0000, pero no sabemos hasta donde llega. Comience a avanzar
por la memoria con el comando “p” hasta encontrar el último desplazamiento o instrucción del
programa. Debe observar las instrucciones del programa fuente para tratar de ubicar cuál será la última
instrucción ahora.
Tome nota de las instrucciones de lenguaje hexadecimal para cada instrucción en lenguaje
simbólico que se introdujo a la memoria... y calcule cuántos bytes ocupa el programa. Punto (C).
10. Después de cada ejecución, anote los cambios en todos los registros... (D). Recuerde que la memoria
contiene otras instrucciones que no nos interesan, ubicadas después de nuestro programa. No las
ejecute!.
Compare los resultados de las operaciones aritméticas de este programa vs el primero y segundo. Hay
diferencias en los registros?. Explique (E)
11. Observe qué sucede con el DS...Dónde están almacenados los datos ? Cómo puedo verlos ?. Investigue
(F)
; Constantes decimales
var1 dw 0293 ; 125 en hex
var2 dw 0056 ; 38 en hex
var3 dw 0080 ; 50 en hex
; Mensaje a pantalla
mensaje1 db 'Programa Terminado',13,10,'$'
assume ss:stacksg,ds:datasg,cs:codesg
mov ax,datasg
mov ds,ax
; terminar programa
mov ax,4C00h ; petición de terminar programa = 4C00h
int 21h ; Interrupcion del DOS que ejecuta la solicitud
;---------------------------------
; Comentarios:
;---------------------------------
; Para cadenas de caracteres a ser desplegadas, primero se definen
; en el segmento de datos con la instrucción DB, entre apóstrofes.
; Los valores 13, 10, indican "retorno de carro" y "avanzar a
; siguiente línea" después de imprimir. El símbolo "$" indica
; delimitador de finalización de despliegue.
Nos aparece esto porque el programa ha sido ejecutado completamente. ¿Cómo sabemos que
se ha ejecutado completamente? Pues si observamos en el código del programa en la parte de
segmento de data:
; Mensaje a pantalla
mensaje1 db 'Programa Terminado',13,10,'$'
Aquí podemos ver como se le asigna a mensaje1 el mensaje de Programa terminado. Luego,
despues al final del programa vemos como ese mensaje es movido al dx para posteriormente
llamarlo cuando se finaliza el programa. Es por eso que identificamos que el programa se ha
terminado correctamente.
PUNTO B:
En este Punto estamos cargando el programa para verificar la ejecución. Verificamos primero
todos los registros comparandolo con los del primer y segundo laboratorio.
Primer laboratorio
Segundo Laboratorio
Tercer Laboratorio
PUNTO C:
PUNTO D:
Ejecutando el programa por la memoria con el comando p. Aquí vemos todas las instrucciones
ejecutadas y los cambios en los registros correspondientes.
Hay diferencias en registros que no afectan el resultado final de la operación como vemos el
resultado se almacena en AX y en todos los laboratorios es 009A
PUNTO F:
Los datos estan almacenados en el segmento de datos 076E en la dirección 0000, 0002 y 0004.
Se visualiza escribiendo d ds:0000 para observar todos los datos almacenados y leyendo nos
damos cuenta en que direcciones estan los primeros datos que introducimos.
De este laboratorio podemos concluir que poco a poco vamos aprendiendo sobre como funcionan
los distintos componentes de nuestro computador, empezando por las direcciones de memoria y
los distintos comandos que podemos utilizar para realizar distintos procedimientos utilizando
DOSBox.
Destacamos que es muy importante comprender que es lo que se está haciendo en cada uno de
los procesos y entender el porqué de cada cosa realizada para asi poder tener el conocimiento
objetivo pertinente del laboratorio.
Es una experiencia muy buena porque se aprende de las cosas bases de la computadora, de lo que
no vemos, del procedimiento que el usuario normal no conoce ni ve, es un mundo.