Uploaded by josuenata

Pract02

advertisement
PRÁCTICA 2
INTRODUCCIÓN AL DEPURADOR
SIMBÓLICO DEL 8086:
TURBO DEBUGGER
OBJETIVO
Al terminar esta práctica, el alumno será capaz de:
Ejecutar un programa usando el depurador simbólico Turbo Debugger
ITSON
Manuel Domitsu Kono
12
Introducción al Depurador Simbólico del 8086: Turbo Debugger
ANTECEDENTES TEÓRICOS
Un depurador simbólico es una herramienta de software que nos permite ejecutar un programa
ejecutable instrucción por instrucción al mismo tiempo que nos muestra el código fuente del programa.
El depurador simbólico nos permite accesar a las variables del programa mediante los nombres de las
variables usados en el programa fuente y no sólo por sus direcciones. Podemos variar el contenido de
las variables mientras el programa está en ejecución y observar el efecto de esos cambios en el
programa y en otras variables.
Turbo Debugger de Borland International es un depurador simbólico que permite la ejecución de
programas escritos en ensamblador, C y Pascal.
DESARROLLO
1. Abra una ventana de DOS.
2. Verifique que los directorios c:\tc, c:\tasm y c:\td están en la lista de rutas de búsqueda del sistema
operativo. De no aparecer los tres directorios mencionados hay que incluirlos en el archivo
AUTOEXEC.BAT y ejecutar este archivo por lotes para que tenga efecto. Vea los pasos 2 a 7 del
DESARROLLO de la PRÁCTICA 1.
3. Inserte el disquete de trabajo en la unidad de disco A y cambie la unidad de disco por ausencia a la
unidad A, tecleando:
a:
4. Desde la unidad de disco A, llame al depurador Turbo Debbuger tecleando
td primer
En el monitor aparecerá lo mostrado en la figura 2-1. Ésta es la pantalla inicial de Turbo Debugger.
En la pantalla aparece una ventana llamada Ventana del CPU que muestra del lado izquierdo el
código fuente del programa, del lado derecho el estado de los registros del microprocesador y en la
parte inferior izquierda un vaciado de parte del segmento de datos del programa. Aunque podemos
depurar el programa usando esta ventana, utilizaremos otro procedimiento que muestra la misma
información en otro formato. Presione [F3] para borrar esta ventana. La tecla [F3] nos elimina de la
pantalla la ventana activa.
5. Primero colocaremos una ventana llamada Ventana de Registros que muestra el estado de los
registros del microprocesador. Para ello seleccione del menú principal la opción View presionando
[Alt][V]. En la pantalla aparecerá el menú mostrado en la figura 2-2.
ITSON
Manuel Domitsu Kono
Práctica 2
Introducción al Depurador Simbólico del 8086: Turbo Debugger
13
Figura 2-1
Figura 2-2
6. De este menú seleccione la opción Registers presionando [R]. Aparecerá la Ventana de
Registros, tal como se muestra en la figura 2-3.
7. Moveremos esta ventana a la esquina superior derecha de la pantalla. Para hacer esto
seleccionaremos del menú principal la opción Window, presionando [Alt][W]. Aparecerá el menú
mostrado en la figura 2-4.
ITSON
Manuel Domitsu Kono
14
Introducción al Depurador Simbólico del 8086: Turbo Debugger
Figura 2-3
Figura 2-4
De este menú seleccionaremos la opción Move/Resize , presionando la tecla [M]. Aparecerá lo
mostrado en la figura 2-5. Para mover la ventana utilizaremos las teclas del cursor: [→ ], [← ], [↑ ],
[↓ ] que moverán la ventana en la dirección de las flechas. Para cambiar el tamaño de la ventana se
utilizan las combinaciones de teclas: [Mayus][→ ] para aumentar su tamaño horizontalmente,
[Mayus][← ] para reducir su tamaño horizontalmente, [Mayus][↑ ] para reducir su tamaño
verticalmente y [Mayus][↓ ] para aumentar su tamaño verticalmente.
8. Mueva la Ventana de Registros hacia la esquina superior derecha y redúzcala verticalmente dos
renglones para que quede como en la figura 2-6.
ITSON
Manuel Domitsu Kono
Práctica 2
Introducción al Depurador Simbólico del 8086: Turbo Debugger
15
Figura 2-5
Figura 2-6
9. A continuación colocaremos una segunda ventana llamada Ventana de Módulo, que nos muestra
el código fuente del programa. Para ello seleccione de nuevo del menú principal la opción View
presionando [Alt][V]. Del menú que aparece seleccione la opción Module presionando [M].
Aparecerá un recuadro con la lista de los módulos de código fuente del programa, figura 2-7. En
este caso, solo hay un módulo. Presione [Enter] para seleccionarlo. Aparece la Ventana de
Módulo con el código fuente. Muévala y cambie su tamaño para que quede como se muestra en la
figura 2-8.
ITSON
Manuel Domitsu Kono
16
Introducción al Depurador Simbólico del 8086: Turbo Debugger
Figura 2-7
Figura 2-8
10. Por último, colocaremos la Ventana de Inspección, para observar las variables del programa.
Para ello seleccione de nuevo del menú principal la opción View presionando [Alt][V]. Del menú
que aparece seleccione la opción Watches presionando [W]. Aparece la Ventana de
Inspección. Muévala y cambie su tamaño para que quede como se muestra en la figura 2-9.
11. Guardaremos esta configuración de ventanas para que esté disponible para otras sesiones y no
tengamos que crearla de nuevo. Seleccione del menú principal la opción Options presionando
[Alt][O]. Aparecerá el menú mostrado en la figura 2-10.
ITSON
Manuel Domitsu Kono
Práctica 2
Introducción al Depurador Simbólico del 8086: Turbo Debugger
17
Figura 2-9
Figura 2-10
12. Seleccionar la opción Save options presionando [S]. Aparece otro menú como se muestra en la
figura 2-11.
13. Seleccione la opción All, presionando la tecla [A]. Aparece un recuadro como se muestra en la
figura 2-12 pidiéndonos el nombre de un archivo en donde se almacenará la configuración.
El nombre por ausencia del archivo de configuración es TDCONFIG.TD. Presione [Enter] para
aceptar ese nombre. Como el directorio de trabajo es el directorio raíz de su disco en la unidad A,
cada vez que cargue el programa Turbo debugger desde ese directorio, se cargará también esa
configuración.
ITSON
Manuel Domitsu Kono
18
Introducción al Depurador Simbólico del 8086: Turbo Debugger
Figura 2-11
Figura 2-12
14. A continuación desplegaremos en la ventana Inspección las variables del programa para observar
como cambian su valor al ir ejecutando el programa. Para ello presionamos [Ctrl][F7]. Aparecerá
un recuadro como se muestra en la figura 2-13.
Teclearemos:
dato1
ITSON
Manuel Domitsu Kono
Práctica 2
Introducción al Depurador Simbólico del 8086: Turbo Debugger
19
Figura 2-13
que es el nombre de la primera variable del programa. En la ventana Inspección aparecerá el
nombre de la variable seguido de su tipo que es byte, así como su valor inicial, expresado como
carácter, en decimal y en hexadecimal, tal como se muestra en la figura 2-14. Turbo Debugger
inicializa a las variables no inicializadas a cero.
Note que la línea en la que aparece la variable está resaltada. Presione la tecla del cursor [↓ ] y la
línea resaltada será la siguiente.
Figura 2-14
15. Repita el paso 14 para colocar en la Ventana de Inspección a las otras variables del programa:
dato2 y resul.
ITSON
Manuel Domitsu Kono
20
Introducción al Depurador Simbólico del 8086: Turbo Debugger
16. Antes de ejecutar el programa les asignaremos los valores de 5h y 6h a las variables dato1 y
dato2, respectivamente. Para ello, primero colocaremos la línea resaltada sobre la variable dato1.
Presione las teclas [Ctrl][C]. Aparecerá un recuadro tal como se muestra en la figura 2-15,
pidiéndonos el nuevo valor de la variable dato1.
Figura 2-15
Teclearemos:
5
El nuevo valor de la variable dato1 aparecerá en la Ventana de Inspección, como se muestra en
la figura 2-16.
Figura 2-16
ITSON
Manuel Domitsu Kono
Práctica 2
Introducción al Depurador Simbólico del 8086: Turbo Debugger
21
Al introducir el valor de 5h en la variable dato1 no fue necesario teclear la letra h para indicar que
el valor es en hexadecimal. Por ausencia los valores tecleados en esta ventana son hexadecimales.
Por otro lado, todos los números hexadecimales deben empezar con uno de los dígitos 0 - 9. Por
lo que para introducir un valor hexadecimal que comience con A - F debemos precederlo con un
cero (0). Por ejemplo si deseamos introducir el valor de Ah, 10 en decimal, deberemos teclear 0A.
Para introducir números en otra base se deberán usar sufijos: d para decimal y b para binario.
17. Repita el paso anterior para cambiar el valor de dato2 a 6h.
18. A continuación se ejecutará el programa. Para ello haremos a la Ventana de Módulo, la ventana
activa. Note que cada ventana tiene en su esquina superior derecha, sobre el marco, su número.
Esos números se asignan conforme se van abriendo o cerrando las ventanas. Para hacer una
ventana la ventana activa presionaremos:
[Alt][n]
donde n es el número de la ventana que deseamos sea la activa. En este caso teclearemos [Alt][2],
el marco de la Ventana de Módulo cambiará de sencillo a doble para indicar que es la ventana
activa y el cursor aparecerá al principio del código fuente.
19. Presione la tecla del cursor [↓ ] para desplazar el cursor hacia abajo hasta que quede sobre la
primera instrucción del programa, en la línea siguiente a la etiqueta Inicio. Tal como se muestra en
la figura 2-17.
Figura 2-17
Note que a la izquierda de la primera instrucción del programa se encuentra un pequeño triángulo.
Este triángulo al que llamaremos marcador de instrucción es un equivalente gráfico del registro
de apuntador de instrucción ya que indica que la instrucción en esta línea será la siguiente a ser
ejecutada.
ITSON
Manuel Domitsu Kono
22
Introducción al Depurador Simbólico del 8086: Turbo Debugger
Observe en la Ventana de Registros el valor del registro AX. El valor será diferente al valor
mostrado en la figura 2-17 ya que varía de computadora a computadora y de corrida a corrida.
Observe también el valor del registro IP, el contador del programa tiene el valor de cero.
20. Para ejecutar una instrucción presione la tecla [F8]. Aparece lo mostrado en la figura 2-18. Note
como el marcador de instrucción se mueve a la siguiente línea del código fuente y que el registro
AX cambió su valor. El nuevo valor de AX es la dirección del segmento de datos, ya que la
instrucción:
mov
ax, @data
carga en el registro AX el valor dado por el símbolo predefinido @data, que Turbo Assembler
define como la dirección de inicio del segmento de datos. El valor de @data no se le asigna en el
momento del ensamble ni en el ligado sino hasta el momento de ejecución ya que es hasta ese
momento en que se sabe en que lugar de la memoria queda el programa.
También el valor del registro IP se habrá incrementado para apuntar a la siguiente instrucción.
Figura 2-18
21. Presione de nuevo la tecla [F8] para ejecutar la siguiente instrucción:
mov
ds, ax
Note como el valor del registro AX se copió al registro DS, esto es inicializamos el registro de
segmento de datos al inicio del segmento de memoria que contiene los datos del programa.
22. Presione [F8]. Observe que ahora la instrucción:
mov
ITSON
al, [dato1]
Manuel Domitsu Kono
Práctica 2
Introducción al Depurador Simbólico del 8086: Turbo Debugger
23
carga en el registro AL el valor de la variable dato1. En la Ventana de Registros podemos ver
que los dos últimos dígitos del registro AX que corresponden al registro AL, han cambiado a 05
que es el valor almacenado en la variable dato1.
23. Vuelva a presionar [F8]. La instrucción:
add
al, [dato2]
le suma al contenido del registro AL el valor almacenado en la variable dato2. El registro AL tiene
ahora el valor de 0B ya que 5h + 6h = Bh.
24. Vuelva a presionar [F8]. La instrucción:
add
al, cte
le suma al contenido del registro AL el valor dado por la constante simbólica cte definida por la
directiva equ como 10. El registro AL tiene ahora el valor de 15 (Bh + Ah = 15h).
25. Vuelva a presionar [F8]. La instrucción:
mov
resul, al
guarda el contenido del registro AL en la variable resul. Note que en la Ventana de Inspección la
variable resul muestra el valor de 21 (15h), figura 2-19.
Figura 2-19
Presionando [F8] dos veces más, cargamos en el registro AH el valor de 4Ch y en el registro AL
el valor de la variable codsal que representa el código de terminación del programa. Por último al
presionar [F8] una vez más llamamos a la interrupción del DOS que termina la ejecución del
programa. En la pantalla veremos el mensaje mostrado en la figura 2-20.
ITSON
Manuel Domitsu Kono
24
Introducción al Depurador Simbólico del 8086: Turbo Debugger
Figura 2-20
26. Para ejecutar el programa de nuevo presione las teclas [Ctrl][F2]. El registro IP se reinicializa a 0,
lo mismo que las variables del programa. Vuelva a ejecutar el programa haciendo que las variable
dato1 y dato2 tomen los valores 25h y A0h.
27. Salga del programa Turbo debugger presionando las teclas [Alt][X].
ITSON
Manuel Domitsu Kono
Download