Está en la página 1de 16

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

JCantillano

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

DEBUG
Bug" significa fallo, defecto en un programa; "debug" significa depurar (escrutar y eliminar fallos). La palabra ha quedado como verbo (depurar), de la que han derivado otras. Por ejemplo: "Debugger" (depurador). Por extensin, todos los programas y utilidades que sirven para escudriar los datos y el cdigo a bajo nivel, se identifican genricamente con esta denominacin.
JCantillano
2

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

Comando R (Register)
Este comando nos permite examinar o modificar los contenidos de los registros internos de la CPU del 8086 La sintaxis es: -R [NOMBRE DE REGISTRO] .....nos despliega los contenidos del registro especificado -R ...............nos despliega los contenidos de todos los regisTros de la cpu

los dos puntos es una invitacin a modificar el contenido del registro

JCantillano

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

CONTENIDOS DE LOS REGISTROS DE LA CPU


00000H 0100 0CD5 0CD5 0CD5 0CD5 0000 0000 0000 0000 FFEE 0000 0000 0000 IP

MEMORIA
0CD5
Segmento de Cdigo Segmento de Datos Segmento de Stack Segmento Extra Activos (64kbyte)

CS DS SS ES AX BX CX DX SP BP SI DI

0000

Flags

FFFFFH 4

JCantillano

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

Comando D (Dump): volcado

D ("Dump") permite obtener un volcado del contenido de la memoria (de debug). La sintaxis acepta dos formas:
D [direccin-inicial] [L posiciones-desde-direccin-inicial ] D [direccion-inicial][direccion-final]

JCantillano

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

Comando D (Dump): volcado


Sabemos que el punto de inicio de la BIOS es la direccin F000:FFF0, y que desde esta posicin hasta el final de la memoria DOS hay 16 bytes. Puede obtenerse un volcado de estas posiciones con el siguiente comando: -D F000:FFF0 La salida en mi equipo es:

En este caso el comando solo muestra una lnea porque ha alcanzado el final de la memoria. Puede verse que la fecha de la BIOS del sistema ocupa las ltimas posiciones. 6 JCantillano

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

Si se ordena el volcado de una direccin, sin indicar ningn nmero de posiciones, por defecto se toma el valor 128 (8 filas de 16 posiciones). Si desea una cantidad distinta, hay que aadir una L ("Long") y el nmero de posiciones, hasta un mximo de 64 KB (FFFF).Los dos comandos que siguen son equivalentes (recuerde que 80 es el equivalente hexadecimal de 128): D FE00:0000 D FE00:0000 L 80 He aqu el resultado:

Sabemos que esta zona corresponde al rea de la BIOS del Sistema... JCantillano
7

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

Comando Enter (E)


Cargando datos ASCII en la memoria con el comando Enter

-E DS:200 ASCII
-D DS:200 204 0CDE:0200 41 53 43 49 49

JCantillano

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

COMANDOS L (LOAD) Y Write (W)


Para leer/escribir el contenido de disco a bajo nivel mediante los prefijos L ("Load") y W ("Write"). Se utiliza la siguiente sintaxis: L [Direccin] [Unidad] [Primer_sector] [Nmero] W [Direccin] [Unidad] [Primer_sector] [Nmero] El significado de los parmetros es como sigue: Direccin: Posicin de la memoria de debug, a partir de la cual se instalarn los datos ledos del disco, o se tomarn para el proceso de escritura (aqu se utiliza generalmente el valor 100h). Unidad: Valor numrico que indica la lgica a utilizar. 0 = A:; 1 = B:; 2 = C:; 3 = D:, etc Primer sector: A partir del que se realizar la lectura, o se comenzar a escribir. Nmero: Nmero de sectores que se desea cargar/escribir. Como debug no puede leer/escribir ms de 64 Kbytes (216 = 65536) y los sectores de disco son de 512 bytes, el mximo nmero de sectores es 128 (80h). As pues, el valor mximo aqu es 80.

JCantillano

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

COMANDOS L (LOAD) Y Write (W)

Ejemplo: Para obtener el contenido del sector de arranque ("Master boot sector" MBR) de un disquete en A:, utilizaremos el comando: C:\WINDOWS>debug - L 100 0 0 1 -D 100 L 200 Se Desplegar el contenido del sector 0 del disco A, el de arranque
JCantillano
10

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

Nombrar y cargar un archivo: N(Name) y L(Load)


Si lo que se busca est en un archivo, primero hay que cargarlo. Lo que se puede hacer de dos formas: en la propia invocacin de debug, o mediante los comandos N y L. Por ejemplo, si queremos inspeccionar el contenido del fichero more.com, podemos utilizar dos formas: C:\WINDOWS>debug c:\windows\command\more.com C:\WINDOWS>debug - N c:\windows\command\more.com -L La sintaxis para el prefijo N es: N [path-name]nombre-de-archivo

En ambos casos el contenido del archivo ser cargado en memoria y podr ser utilizado. JCantillano
11

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

COMPROBAR EL TAMAO DEL ARCHIVO CARGADO


Para ello usamos la opcin R (ver estado de los registros) y obtenemos el siguiente resultado: -R AX=0000 BX=0000 CX=2917 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=17A7 ES=17A7 SS=17A7 CS=17A7 IP=0100 NV UP EI PL NZ NA PO NC 17A7:0100 E8CD0F CALL 10D0 Aqu nos interesa especialmente el contenido del registro CX, cuyo valor, 2917h (1519d) en este caso, seala el tamao del fichero en bytes. Tambin podamos haber utilizado directamente el comando R CX que nos proporciona el valor de dicho registro: -R CX CX 2917 : -

JCantillano

12

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

Registro de flags: Para poder cambiar el registro de flags


Registro de flags: Para poder cambiar el registro de flags use el comando -R F NV UP EI PL NZ NA PO NC - ; meter aqu una lista de los indicadores que se quieran Desbordamiento ( si/no) Poner: OV Quitar: NV Direccion(reduccin / incremento) poner: DN quitar UP Interrupcin(activar/desactivar) poner: EI quitar: DI Puede ingresar un solo Signo (negativo / positivo) poner: NG quitar: PL valor y solamente ese Cero ( s / no) poner: ZR quitar: NZ cambiar Acarrero Auxiliar ( s / no ) poner: AC quitar: NA Paridad ( par / impar ) poner: PE quitar: PO Acarreo (s / no ) poner: CY quitar: NC Overflow NV = no hay desbordamiento; OV = s lo hay Direction UP = hacia adelante; DN = hacia atras; Interrupts DI = desactivadas; EI = activadas Sign PL = positivo; NG = negativo Zero NZ = no es cero; ZR = s lo es Auxiliary Carry NA = no hay acarreo auxiliar; AC = hay acarreo auxiliar Parity PO = paridad non; PE = paridad par; 13 Carry NC = no hay acarreo; CY = S lo hay

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

Comando S ("Search").
Existen dos sintaxis alternativas: S [direccin-de-inicio] [L longitud-a-explorar] [contenido-a-buscar] S [direccin-de-inicio] [direccin-final L] [contenido-a-buscar] El contenido a buscar debe darse en hexadecimal o entre comillas si es un texto ASCII. Por ejemplo: Se desea ver algunas caractersticas de la BIOS en un equipo IBM. Se que estos datos se alojan a partir de la posicin F000:0000 hasta el final de la memoria. Es decir, una longitud de 64 Kbytes (FFFF) a partir de la posicin de inicio, y que seguramente, los datos buscados estarn cerca de la identificacin de la propia BIOS (la cadena "IBM"). Por lo que utilizo la siguiente sintaxis: -S F000:0000 L FFFF "IBM" JCantillano
14

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013

Comando S ("Search").
y obtendramos la siguiente salida: F000:3A0C F000:3A70 F000:3B13 F000:4839 F000:48BA F000:492A F000:499A F000:4A0A con las direcciones donde se ha encontrado la ocurrencia buscada

JCantillano

15

Universidad Nacional de Ingeniera - UNI Arq de Mquinas Computadoras I - 2013


El 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 D ; 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 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

JCantillano

16

También podría gustarte