Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TELECOMUNICACIONES
Debug es una utilidad de MS-DOS1 que permite visualizar contenido de memoria RAM, introducir
programas en ella y rastrear su ejecución. Una característica de debug es que muestra todo el código
del programa en formato hexadecimal.
Debug es útil para ensamblar pocas líneas de código, desensamblar código en RAM, ROM y
ejecutables, correr paso-a-paso programas, desplegar datos en memoria, verificar estado de los
registros del CPU, entre otras funcionalidades.
Para Ingresar a debug abrimos la consola de comandos (cmd) del MS-DOS de Windows; una vez en
ella, digitamos el comando debug.
(Lo que esté después del punto y coma (;) serán comentarios y no es necesario que usted lo escriba)
2
The operating systems Intel ISIS-II and iRMX 86, DEC TOPS-10 and TOPS-20, THEOS/OASIS, Zilog Z80-RIO,
Stratus OpenVOS, PC-MOS, and AROS also provide a DEBUG command. Tomado de:
https://en.wikipedia.org/wiki/Debug_(command)
3
La funcionalidad de cada comando, la puede ver en la guía
https://thestarman.pcministry.com/asm/debug/debug.htm
-a 0100
xxxx:0100 jmp 125 ; jmp es una instrucción de salto, significa: salte a la dirección 125
xxxx:0102 db 0d, 0a, "Mi primer programa en DEBUG!!!"
xxxx:0122 db 0d, 0a, "$"
xxxx:0125 mov ah, 09 ; Función 09 de la Int 21h:
xxxx:0127 mov dx, 102 ; DS:DX -> $ termina la cadena del mensaje.
xxxx:012A int 21 ; Escribe un mensaje por pantalla; viene siendo la salida estándar.
xxxx:012C mov ah, 00 ; Función 00 de la Int 21h:
xxxx:012E int 21 ; Termina un programa (Fin).
xxxx:0130 [enter]
-g =100 ; Para ejecutar el programa
En este ejemplo se utiliza la función 00 de la int 21 para terminar el programa normalmente. La función
09 de la int 21 muestra por pantalla un mensaje que inicia en la dirección almacena en el registro DX.
NOTA: cuando se escriben programas que inician con un salto; se debe calcular la dirección precisa
de la ubicación de la instrucción en ese salto. Es decir, el salto debe apuntar al inicio de la instrucción,
de lo contrario no se ejecutará el programa de manera normal.
-a 0100
xxxx:0100 jmp 125
xxxx:0102 db ‘Mi primer programa en DEBUG’ 0d 0a ‘$’
xxxx:0120 [enter] ; queda espacio reservado, por eso se escribe nuevamente el comando a
-a 0125
xxxx:0125 mov ah, 09
xxxx:0127 mov dx, 102
xxxx:012A int 21 ; Escribe un mensaje por pantalla; viene siendo la salida estándar.
xxxx:012C Int 20 ; Termina un programa de forma normal. No necesita función especial
xxxx:012E [enter]
-g =100 ; Para ejecutar el programa
Mi Primer programa en DEBUG!!!
A diferencia del ejemplo 1, se utilizaron comillas sencillas para definir el mensaje. El carácter $ indica
el final de una cadena. Otra pequeña diferencia fue la utilización de la int 20 para terminar el programa
de manera normal.
Ejemplo 3. (En la Ilustración 3. Mensaje Mostrado 20 veces por pantalla, se Observa la salida del
programa).
Programa que envía 20 veces por pantalla el mensaje “Hola Mundo…!!!”
-a 100
xxxx:0100 jmp 125
xxxx:0102
-e 0102 'Hola Mundo…!!!' 0d 0a '$'
-a 125
xxxx:0125 mov cx, 0014 ; cantidad de veces que se va repetir el mensaje
xxxx:0127 mov dx, 0102 ; recuerde que son escritos en hexadecimal
xxxx:0129 mov ah, 09
xxxx:012A int 21
xxxx:012B loop 012A
xxxx:012C int 20
xxxx:012D
-g =0100
Ejercicios
1. Escribir un programa en debug que muestre 20 veces por pantalla un mensaje y en cada línea
el mensaje aparezca escrito en un color diferente.
Ejemplo de la salida:
Mensaje 1
Mensaje 1
Mensaje 1
Mensaje 1
Mensaje 1
Y así sucesivamente.
2. Escribir un programa en debug que muestre 20 veces por pantalla un mensaje y en cada línea
el mensaje aparezca escrito en un color y fondo de letra diferente.
Ejemplo de la salida:
Mensaje 1
Mensaje 1
Mensaje 1
Mensaje 1
Y así sucesivamente.