Você está na página 1de 7

BENEMRITA UNIVERSIDAD AUTNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIN

PRCTICA DE LABORATORIO No I

NOMBRE DE LA PRCTICA: COMANDOS BSICOS DE DEBUG( PARTE I)

OBJETIVO: APRENDER LOS COMANDOS BSICOS DE UN DEPURADOR DINMICO DESARROLLO DE LA PRCTICA: DEBUG "Bug" significa fallo, defecto en un programa; "debug" significa depurar (escrutar y eliminar fallos), "Debugger" (depurador). Sinopsis DEBUG.EXE es un ejecutable que, hasta 2001, acompa a todas las versiones de MSDOS, a partir de la 2.0, y de Windows. Se trata de una utilidad interactiva de exploracin de bajo nivel, pero que tambin puede utilizarse para ciertas funciones. Por ejemplo: ensamblador a lenguaje mquina. Para utilizarlo basta invocarlo desde MS-DOS o desde una ventana DOS de Windows. Opciones Una vez que el programa est en ejecucin, el indicador ("prompt") es un guin "-", indicando que el "Shell" espera recibir rdenes. La opcin ms sencilla es la interrogacin ?, cuyo resultado es una lista resumida de las opciones disponibles:

ensamblar A [direccin] comparar C direccin de intervalo volcar D [intervalo] escribir E direccin [lista de valores] llenar F lista de intervalos ir G [=direccin] [direcciones] hex H valor1 valor2 entrada I puerto cargar L [direccin] [unidad] [primer_sector] [nmero] mover M direccin de intervalo nombre N [nombre_ruta] [lista_argumentos] salida O byte de puerto proceder P [=direccin] [nmero] salir Q registrar R [registrar] buscar S lista de intervalos seguimiento T [=direccin] [valor] desensamblar U [intervalo] escribir W [direccin] [unidad] [primer_sector] [nmero] asignar memoria expandida XA [#pginas] desasignar memoria expandida XD [identificador] asignar pginas de memoria expandida XM [Lpgina] [Ppgina] [identificador] mostrar estado de la memoria expandida XS La mayora de los comandos de debug ejecutan una accin y vuelven al indicador del shell, pero si es un comando largo, como puede ser mostrar un trozo grande de cdigo, puede detenerse pulsando CTRL-Pausa o interrumpirse con CTRL-C para volver al shell. Errores Cuando debug no sabe interpretar un comando, muestra un mensaje de error y un indicador "^" debajo del sitio del comando donde est el error. Comandos Comencemos: El comando 'H' : la instruccin "H <op_1> <op_2>" devuelve la suma y la resta ( en hexadecimal) de los dos operandos suministrados. Donde op1 y op2 significan operandos. Parmetros: 2 nmeros hexadecimales de 4 dgitos (mximo)

Uso Resultado: <resultado_1>; Es la suma (<op_1> + <op_2>) <resultado_2>; es la resta (<op_1> - <op_2>) Ejemplo: -h 0003 0002 0005 0001 -h 0000 0001 0001 FFFF, como se observa el resultado de la segunda operacin es FFFF, que es el equivalente en complemento a 2 de -1 El comando 'R' : muestra o modifica registros Parmetros: [registro] Resultado: Si especificamos un registro, DEBUG nos permite modificar el contenido de ese registro, si no lo hemos especificado, presenta por pantalla el contenido de los registros principales del procesador, adems muestra la instruccin apuntada por CS:IP

Registro de flags: NV UP EI PL NZ NA PO NC Desbordamiento Poner: OV Quitar: NV

Direccion(reduccin/incremento) poner: DN quitar UP Interrupcin(activar/desactivar) poner: EI quitar: DI Signo (negativo / positivo) poner: NG quitar: PL Cero ( s / no) poner: ZR quitar: NZ Acarrero Auxiliar ( s / no ) poner: AC quitar: NA Paridad ( par / impar ) poner: PE quitar: PO Acarreo (s / no ) poner: CY quitar: NC Ejemplo 1: -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2048 ES=2048 SS=2048 CS=2048 IP=0100 NV UP EI PL NZ NA PO NC 2048:0100 92 XCHG DX,AX Ejemplo 2 : -r ax AX 0000 :01 -r AX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=2048 ES=2048 SS=2048 CS=2048 IP=0100 NV UP EI PL NZ NA PO NC 2048:0100 92 XCHG DX,AX El comando 'E' ( escribir en memoria ) Parmetros: <dir_comienzo> [lista de palabras a escribir] Resultados: Se escribe a partir de la direccin de memoria DS:<dir_comienzo> la lista de palabras (dos dgitos hexadecimales) del segundo parmetro. Si no se especifica un segundo parmetro entonces DEBUG no permite introducir palabra a palabra los datos que queramos, a partir de la direccin DS:<dir_comienzo>. Podemos pasar a la palabra siguiente de memoria presionando la tecla ESPACIO, cuando hayamos terminado de introducir los datos que queramos, hay que pulsar INTRO Ejemplo:

-E 100 2048:0100 56.

Ejemplo 2 -E 100 00 01 02 El Comando 'T': traza o ejecuta paso a paso) Parmetros: [< =direccin>]; Direccin a partir de la cual se quiere que se trace (OJO: HAY QUE PONER EL '=' ) <num_instrucciones> ; Nmero de instrucciones que hay que ejecutar Resultados: se ejecutan las <NUM_instrucciones> instrucciones a partir de CS:<direccion> ( si se ha especificado <direccion> ) o se ejecutan <NUM_instrucciones> a partir de CS:IP, si no se especifica el parmetro <NUM_instrucciones> se ejecuta una nica instruccin Ejemplo:

El Comando 'Q': Salir de debug Para poder salir del programa es introduciendo el comando 'Q'

Ejercicios 1.- Introducir el siguiente cdigo para la suma de 2 nmeros: Cdigo de Mquina: 01D8 Asignar a AX=5 Asignar a BX=3 2.- Introducir el siguiente cdigo para la resta de 2 nmeros: Cdigo de Mquina: 29F8 Asignar a AX=5 Asignar a BX=3 3.- Introducir el siguiente cdigo para la multiplicacin de 2 nmeros: Cdigo de Mquina: F7E3 Asignar a AX=5 Asignar a BX=3 4.- Introducir el siguiente cdigo para la divisin de 2 nmeros: Cdigo de Mquina: F7F3 Asignar a AX=8 Asignar a BX=4 5.- Utilizando los ejercicios del 1 al 4 realice un programa que genere secuencialmente la suma, resta, multiplicacin y divisin, en ese orden, los valores originales del registro AX y BX son los que deseen. Una caracterstica poco conocida, es que debug puede aceptar entradas desde un fichero "Script", que puede ser un simple fichero de texto ASCII en el que cada comando est separado del anterior por un INTRO. Despus del ltimo, que debe ser una "Q" para salir de debug, es conveniente dejar una lnea en blanco pulsando INTRO dos veces. Las lneas pueden contener comentarios. Cualquier cosa a partir del carcter punto y coma (;) hasta el final de la lnea, ser ignorado. ; esto es un comentario R ; aqu se mostrar algo... Suponiendo que tengamos un fichero "Script" de nombre Ordenes.txt, puede ser utilizado como entrada para debug mediante un comando de redireccin en la siguiente forma: DEBUG < Ordenes.txt [Enter]

Tambin puede conseguirse que el programa redireccione la salida hacia un fichero que puede ser inspeccionado ms tarde. Aunque tiene la dificultad de tener que trabajar "a ciegas", puede ser de utilidad en determinadas circunstancias. Por ejemplo, cuando se desea un volcado de determinadas zonas de la memoria. En el caso anterior podra obtenerse un fichero Result.txt con el siguiente comando: DEBUG < Ordenes.txt > Result.txt [Enter] FIN.

Você também pode gostar