Está en la página 1de 5

DEPARTAMENTO DE INGENIERÍA DE SISTEMAS Y

TELECOMUNICACIONES

PROGRAMAS EJEMPLOS REALIZADOS EN DEBUG

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.

Debug funciona o viene incorporado en máquinas de 32 bits, como Windows® 9x/Me,


NT/2000/XP/2003. Entre otros sistemas operativos2.

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)

Sigamos las siguientes líneas:


C:\> Debug [enter] ; Sabemos que estamos en debug porque aparecerá un guion (-)
- ? ; El signo de interrogación mostrara todos los comandos de debug 3.
Assemble A [address]
Compare C range address
Dump D[B|W|D] [range]
Enter E address [list]
Fill F range list
Go G [=address] [breakpoints]
Hex add/sub H value1 value2
Input I[W|D] port
Load file L [address]
1
Tim Paterson creo esta utilidad para Personal ComputerTM DOS 1.00 de IBM® en 1981. Tomado de: A
Guide to DEBUG (The Microsoft® DEBUG.EXE Program) Copyright©2004,2007,2009,2017 by Daniel B.
Sedory https://thestarman.pcministry.com/asm/debug/debug.htm

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

Por una universidad con calidad, moderna e incluyente


Carrera 6ª. No. 77-305 Montería NIT. 891080031-3 - Teléfono: 7860300 - 7860920
www.unicordoba.edu.co
DEPARTAMENTO DE INGENIERÍA DE SISTEMAS Y
TELECOMUNICACIONES

Move M range address


Name N [[drive:][path]filename [arglist]]
Output O[W|D] port value
Proceed P [=address] [count]
Quit Q
Register R [register [value]]
Search S range list
Trace T [=address] [count]
Unassemble U [range]
Write W [address]
-Q [enter]; el interés de esta guía estará centrado en el comando A de Assemble.

Utilizaremos el comando A para escribir directamente en el segmento de código un pequeño programa


en lenguaje ensamblador.

Ejemplo 1. (Ver Ilustración 1. Mi Primer Programa en DEBUG.)


Programa que envía el mensaje por pantalla “Mi primer programa en DEBUG!!!”

-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

Mi Primer programa en DEBUG!!!

Programa ha terminado de forma normal


-

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.

Por una universidad con calidad, moderna e incluyente


Carrera 6ª. No. 77-305 Montería NIT. 891080031-3 - Teléfono: 7860300 - 7860920
www.unicordoba.edu.co
DEPARTAMENTO DE INGENIERÍA DE SISTEMAS Y
TELECOMUNICACIONES

Ilustración 1. Mi Primer Programa en DEBUG.

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.

Ejemplo 2. (Ver Ilustración 2. Otra forma de enviar mensaje por pantalla)


Otra forma de enviar el mensaje por pantalla “Mi primer programa en DEBUG”

-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!!!

Programa ha terminado de forma normal


-

Por una universidad con calidad, moderna e incluyente


Carrera 6ª. No. 77-305 Montería NIT. 891080031-3 - Teléfono: 7860300 - 7860920
www.unicordoba.edu.co
DEPARTAMENTO DE INGENIERÍA DE SISTEMAS Y
TELECOMUNICACIONES

Ilustración 2. Otra forma de enviar mensaje por pantalla

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

Por una universidad con calidad, moderna e incluyente


Carrera 6ª. No. 77-305 Montería NIT. 891080031-3 - Teléfono: 7860300 - 7860920
www.unicordoba.edu.co
DEPARTAMENTO DE INGENIERÍA DE SISTEMAS Y
TELECOMUNICACIONES

Ilustración 3. Mensaje Mostrado 20 veces por pantalla

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.

Por una universidad con calidad, moderna e incluyente


Carrera 6ª. No. 77-305 Montería NIT. 891080031-3 - Teléfono: 7860300 - 7860920
www.unicordoba.edu.co

También podría gustarte