Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Salazar Narvez
Ing. Sistemas Computacionales
Catedrtico:
4to A
DEBUG
es un programa que se utiliza para depurar programas, para conocer lo que realiza la computadora a nivel de hardware todo lo que ocurre cuando ejecuta un programa, porque te va mostrando los valores de los registros, localidad de memoria, etc
Introduccin.
En la siguiente presentacin se hablara del programa DEBUG que es un programa que se encarga de probar y depurar programas ejecutables desde DOS. Se hablara de sus caractersticas principales cuales son los comandos mas utilizados y su funcin, cual es su estructura, como inicializa entre otras utileras que ofrece DEBUG.
El programa DEBUG.
El DOS viene con un programa llamado DEBUG que es utilizado para probar y depurar programas ejecutables.
Caractersticas de DEBUG:
Despliega todo el cdigo del programa y los datos en forma hexadecimal. Permite ejecutar un programa en modo de paso sencillo (un paso a la vez) de manera que se pueda ver el efecto de cada instruccin sobre las localidades de memoria y los registros.
Comandos de DEBUG
Los comandos que proporciona DEBUG nos permiten realizar diferentes operaciones tiles. La mayora de los comandos de DEBUG ejecutan una accin y vuelven al indicador, 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.
Comand o.
A D E G N P Q R T U W XA XD XM
Descripcin.
Ensamblar instrucciones simblicas pasarlas a cdigo de maquina. Mostrar el contenido de un rea de memoria. Introducir datos en memoria, iniciando en una localidad especifica. Correr el programa ejecutable encuentra en memoria. Nombrar un programa. Proceder a ejecutar un instrucciones relacionadas. Salir de la seleccin con DEBUG. Mostrar el contenido de uno o ms registros. Rastrear la ejecucin de una instruccin. Desensamblar cdigo mquina y pasarlo a cdigo simblico. Escribir o grabar un programa en disco. Asignar memoria expandida. Desasignar memoria expandida. Asignar pginas de memoria expandida. conjunto de que se y
XS
Utilizado el comando D de DEBUG para mostrar la misma rea de memoria, iniciando en el desplazamiento 200h en el segmento de datos (SD).
D DS:200 (comando en mayscula, con un espacio en blanco despus de l)
DDS:200
dds:200
Note que especifica segmentos y desplazamientos con dos puntos (:). Adems, DEBUG supone que todos los nmeros estn en formato hexadecimal.
3. Representacin en ASCII de
los bytes que contienen caractersticas desplegables .
Direccin
xxxx:xx10 xxxx:xx20 xxxx:xx30
2.
DEBUG debe cargarse al disco de la memoria. Cuando el indicador (-), aparezca en la pantalla. DEBUG est listo para recibir sus comando.
Ahora agarramos la primera lnea algo as: 0040:0010 23 C8 F0 80 .. .. .. .. En este ejemplo, los dos bytes en la palabra del estado del equipo contienen los valores hexadecimales 23 C8. invierta los bytes (C8 23) y convirtalos a binario: Bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Binario:
Aparecer 0040:0010 .. .. .. 80 02 .. .. .. Los dos primeros bytes mostrados en el desplazamiento 0010H son los kilobytes de memoria en hexadecimal, con los bytes en secuencia inversa. Ejemplo:
Hexadecimal Inverso
80 02
Hexadecimal Corregido
02 80
La pantalla muestra un nmero de series de siete dgitos seguido , en maquinas convencionales, de una nota de derechos reservados. Para seguir checando los derechos reservado basta con poner D y un Enter.
Cdigo F8 F9
Modelo PS/2 Modelos 70 y 80 PC Convertible PS/2 Modelo 30 PC-XT (1986) PC-AT (1984), PC-XT Modelo 286 PS/2 Modelos 50 y 60, etc. PC-XT (1982), Porttil (1982)
FA FB FC FE
FF
Primera IBM PC
MOV es la instruccin, el registro AX es el primer operando y el valor inmediato 0123H es el segundo operando.
Instruccin de mquina
B82301 052500 BD8 03D8 8BCB 2BC8 2BC0
Cdigo simblico
MOV AX,0123 ADD AX,0025 MOV BX,AX ADD BX,AX MOV CX,BX SUB CX,AX SBU AX,AX
Explicacin
Mover el valor 0123H a AX Sumar el valor 0025H a AX Mover el contenido de AX a BX Sumar el contenido de AX a BX Mover el contenido de BX a CX Restar el contenido de AX a CX Restar AX de AX (limpiar AX)
Las instrucciones de mquina pueden tener uno, dos o tres bytes de longitud. El primer byte es la operacin real y cualesquiera otros bytes, si estn presentes, son operandos: referencia a un valor de inmediato, un registro o una localidad de memoria.
La ejecucin del programa empieza con la primera instruccin de mquina y avanza por cada instruccin, una despus de otra.
Al llegar ha este punto no esperamos que tenga mucho sentido el cdigo de mquina.
El siguiente comando E almacena 6 bytes, empezando en CS:106 a 107, 108, 109, 10A y 10B: E CS:106 8B D8 03 D8 8B CB El ultimo comando E almacena 5 bytes, empezando en CS:10C a 10D, 10E, 10F y 110: E CS:10C 2B C8 2B C0 90
Si teclea algn comando de manera incorrecta, solo reptalo con los valores correctos.
Comandos
Regresar
Registros de banderas
Registro IP
Para ver los contenidos iniciales de los registros y las banderas. Teclee el comando R. DEBUG muestra el contenido de los registros en forma hexadecimal.
El registro IP muestra IP=0100, indicando que la ejecucin de la instruccin inicia 100H bytes despus del inicio del segmento del cdigo.
Ver figura.
El comando R tambin muestra el desplazamiento 0100H la primera instruccin que es ejecutada. Note que en la figura el registro CS contiene 21C1. Ya que es seguro que su direccin de segmento CS, difiera de esta, la mostramos como xxxx para las instrucciones:
xxxx:0100 B82301 MOV AX,0123 xxxx indica el inicio del segmento del cdigo como xxxx[0]. El valor xxxx:0100 significa desplazarse 100H bytes despus de la direccin del segmento CS xxxx[0]. B82301 es el cdigo de mquina que usted introdujo en CS:100.
MOV AX,0123 es la instruccin simblica en ensamblador para el cdigo mquina. Esta instruccin significa, en realidad, mover el valor inmediato 0123H al registro AX.
En este momento, la instruccin MOV no ha sido ejecutada. Para ese propsito se teclea T, luego Enter. El cdigo de maquina es B8 (mover al registro AX) seguido por 2301. la operacin mueve el 23 a la mitad baja (AL) del registro AX y el 01 a la mitad alta (AH) del registro AX: AH AX AL
01
23
DEBUG muestra los resultados en los registros. El contenido del registro IP es 0103H, que indica la ubicacin del desplazamiento en el segmento del cdigo de la siguiente instruccin que ser ejecutada a saber: xxxx:0103 052500 ADD AX,0025 Para ejecutar esta instruccin, introduzca otra T. la instruccin ADD suma 25H a la mitad baja del registro AX y 00H a la mitad alta, en realidad suma 0025H al AX. Ahora AX contiene 0148H y el IP contiene 016H para la siguiente instruccin que se ejecutara: xxxx:0106 8BD8 MOV BX,AX. Teclee T. la instruccin MOV mueve el contenido del registro AX a BX. Despus de mover BX contiene 0148H AX aun contiene 0148H ya que MOV copia en el lugar de mover los datos de esa localidad a otra. Ahora teclee T hasta pasar por el resto de las instrucciones. La instruccin ADD suma el contenido de AX a BX, dando 0290H en BX. Despus el programa mueve el contenido de BX a CX, resta a AX de CX y resta AX de el mismo. Despus de la ultima operacin la bandera de cero se cambia de NZ a ZR para indicar que el resultado de la ultima operacin fue cero. A continuacion se muetra todos los pasos.
DEBUG muestra 16 bytes de datos en cada lnea. A la derecha esta la representacin ASCII de cada byte. La primera lnea del despliegue inicia en el desplazamiento 100H del segmento del cdigo y representa el contenido de CS:100 hasta CS:10F. La segunda lnea representa el contenido CS:110 hasta CS:11F.
El comando A.
A (ensamblar) le dice a DEBUG que acepte instrucciones simblicas en ensamblador y las convierte en lenguaje maquina. Inicialice la direccin de inicio en el segmento de cdigo con desplazamiento 100H para sus instrucciones como: A 100 (Enter) DEBUG muestra el valor del segmento de cdigo y el desplazamiento como xxxx:0100
A continuacin se teclea cada una e las siguientes instrucciones seguido de un Enter. MOV AL,25 MOV BL,32 ADD AL,BL NOP DEBUG muestra lo siguiente:
Puede ver que DEBUG ha terminado la localidad de inicio de cada instruccin. Pero antes de ejecutar el programa usemos el comando U (desensamblar) de DEBUG para examinar el lenguaje de mquina generado.
El comando U
Muestra el cdigo de mquina para sus instrucciones en lenguaje ensamblador. Se puede usar este comando para indicarle a DEBUG las localidades de la primera y ultima instruccin que quiere ver, en este caso, 100H y 106H. Teclee U 100,106 (Enter) Y la pantalla muestra:
Ahora rastree le ejecucin del programa, el cdigo de mquina es lo que realmente se ejecuta. Introducir R para desplegar los registros y la primera instruccin , despus T sucesivamente para rastrear las instrucciones subsecuentes. Cuando se llega a NOP se puede continuar con la siguiente instruccin si no presionar Q para salir.
La instruccin INT
A continuacin se muestra como accesar el DOS y el BIOS para enviar informacin acerca del sistema, por el cual se utiliza la instruccin INT (interrupcin) la cual sale de un programa, ingresa una rutina del DOS o de BIOS, realiza la funcin solicitada y regresa a su programa. Usaremos el comando P (proceder) de DEBUG para ejecutar toda la rutina de interrupcin.
Para rastrear la ejecucin de las instrucciones primero ingresar R para ver los registros y T para rastrear MOV. En lugar de rastrear la instruccin INT, ingrese P para ejecutar toda la rutina del DOS. El proceso termina con la instruccin NOP. Ahora se ve el AL el numero principal de la versin DOS como X en DOS X.20, y en el AH el numero secundario de la versin, como 14H (o 20) en DOS X.20
2.
Usar DEBUG para escribir un pequeo programa en lenguaje de mquina que ahora quiera guardar: Solicite el programa DEBUG. Utilice A (ensamblar) y E (ingresar) para crear el programa. Ponga nombre al programa N nombredearchivo.COM la extensin del programa debe ser .COM Cuando termine el programa en realidad, indique a DEBUG el tamao del programa en bytes Utilice R BX para mostrar el BX, e ingrese 0 para limpiarlo Ahora use R CX para mostrar el registro CX
11A
11C 11E 120
DB
DB DB DB
14 23
05 00 00 00 00 00 00
Mueve el valor inmediato 25H a las localidades de memoria 120h-121H. El operador WORD PTR indica a DEBUG que debe mover el 25H a una palabra de memoria
Mueve el valor inmediato 30H a la localidad de memoria 122H. Queremos mover un byte y el operador BYTE PTR indica longitud.
11A
11C, 11E y 120
Define los valores de bytes 14H y 23H. DB (definir bytes) le permite definir datos que sus instrucciones estn referenciado.
Define otros valores de bytes para uso en el programa.
Se sigue el mismo procedimiento teclear A 100, despus todas las instrucciones y un Enter de ms. Se introduce R para mostrar el registro y la primera instruccin, despus T sucesivamente. Salir de la ejecucin cuando se llega a NOP en 118. teclear D 110 para mostrar los contenidos combinados de AX (233E) y de las localidades 11EH-11EF (3e23), 120H-121H (2500) y 122H (30)
Conclusin.
DEBUG puede ser uno de los programas mas antiguas que hay pero todava realiza lo que se le indica. Como se dijo es til para probar y depurar programas escritos en lenguaje mquina y en lenguaje ensamblador.
Bibliografa.
Libro: Lenguaje ensamblador y programacin para IBM PC compatibles. Autor:
Abel Peter
Editorial: Pearson Educacin