Debug en Windows 7 x64 - Facultad de Ciencias de la ...hilario_sm/slide/ensamblador 2012...Para esta...

13
Debug en Windows 7 x64 con DOSBox Francisco Daniel García Noriega Introducción a DOSBox y práctica de ensamblador con debug en Windows 7 de 64 bits

Transcript of Debug en Windows 7 x64 - Facultad de Ciencias de la ...hilario_sm/slide/ensamblador 2012...Para esta...

Debug en Windows 7 x64 con DOSBox Francisco Daniel García Noriega

Introducción a DOSBox y práctica de ensamblador con debug en Windows 7 de 64 bits

Contenido Introducción a DOSBox .................................................................................................................. 2

Atajos de teclas en DOSBox ............................................................................................................ 3

Práctica de ensamblador con debug. ............................................................................................... 4

Introducción a DOSBox

Es un emulador de DOS que utiliza librerías SDL que hacen de DOSBox muy portable para

diferentes plataformas. DOSBox ha sido creado para diferentes plataformas como Windows, BeOS,

Linux, MacOS X…

DOSBox emula el CPU: 286/386 en modo real y protegido, sistemas de archivos XMS/EMS,

gráficos Tandy/Hercules/CGA/EGA/VGA/VESA, sonidos de SoundBlaster/Gravis Ultra Sound

para una excelente compatibilidad con video juegos.

Es OpenSource y gratis.

A través de su página podemos obtener los instaladores en la sección de descargas.

http://www.dosbox.com/

Resumen de la introducción de DOSBox:

Antes de empezar a usar los archivos en nuestro propio sistema de archivos hay que montar el

directorio que contiene los archivos.

mount C C:\archivos\ creará una unidad C con el contenido de C:\archivos

C:\archivos\ es un ejemplo. Remplázalo con tu propio directorio de archivos

Cuando esté montada completamente puedes escribir c: para ir a la nueva unidad montada. Ejecutar

dir para mostrar el contenido. El comando cd permitirá entrar en un directorio. Se pueden ejecutar

programas que terminen en .exe .bat y .com.

En caso de ocurrir un error DOSBox se detendrá y abortará sin mostrar algún aviso.

Atajos de teclas en DOSBox Pueden ser cambiados en el keymapper

Alt + enter Pantalla completa

Alt + pause Pause DOSBox

Ctrl + F1 Inicia el keymapper

Ctrl + F4 Actualiza el directorio cache para todas las

unidades.

Ctrl + Alt + F5 Empieza/Detiene creación de una película de la

pantalla

Ctrl + F5 Guarda una captura de pantalla

Ctrl + F6 Empieza/Detiene la grabación de una salida a

un archivo de ondas.

Ctrl + Alt + F7 Empieza/Detiene la grabación de comandos

OPL

Ctrl + Alt + F8 Empieza/Detiene la grabación de comandos raw

MIDI

Ctrl + F7 Decrece los saltos de fotogramas

Ctrl + F8 Aumenta los saltos de fotogramas

Ctrl + F9 Mata DOSBox

Ctrl + F10 Captura/Desactiva el mouse

Ctrl + F11 Decrece los ciclos de DOSBox

Ctrl + F12 Aumenta los ciclos de DOSBox

ALT + F12 Desbloquea la velocidad

Práctica de ensamblador con debug.

Primeramente se debe instalar DOSBox con el instalador “DOSBox0.74-win32-installer.exe”, el

procedimiento es realmente sencillo y una vez culminado se debe poder abrir sin problemas

mostrando una pantalla como la siguiente:

Se debe tener el programa “debug.exe” y de preferencia tenerlo localizado en un directorio próximo

a la unidad raíz.

Para esta práctica se creará un directorio llamado debug en la unidad C y en esta carpeta se

almacenará el programa “debug.exe”.

Se debe tener una vista como la siguiente:

Una vez que nuestra carpeta “debug” se visualice como lo anterior, estará lista el área de trabajo

donde se llevará a cabo la práctica.

En DOSBox lo primero que hay que realizar es montar en una unidad la carpeta donde se ubicarán

los archivos a utilizar o una carpeta que sirva de referencia para desplazarnos en nuestro sistema de

archivos. Se procederá a ejecutar la siguiente instrucción:

mount d c:\debug\

de esta manera se montará la carpeta “debug” ubicada en nuestra unidad C en la unidad virtual D de

DOSBox y de esta manera se podrá acceder a los archivos. Cuando el montado es exitoso DOSBox

muestra una mensaje de que se ha llevado a cabo satisfactoriamente.

Ahora hay que acceder a la unidad virtual D, introduciendo el siguiente comando y enter:

D:

El prompt a partir de ahora nos ubicará en la unidad D y para verificar que se ha realizado el

montaje anterior de manera exitosa se procederá a ejecutar el siguiente comando:

dir

De esta manera se puede visualizar el programa “debug.exe” esto demuestra que se montó la

carpeta debug de la unidad C en la unidad virtual D de DOSBox partiendo como raíz en D.

Ahora, libremente se puede teclear la siguiente instrucción para invocar al programa “debug.exe”

debug

Y en seguida aparecerá el prompt (-) del debug en el lado izquierdo esperando una instrucción.

Para comprobar que estamos en debug podemos listar las instrucciones disponibles en debug

introduciendo el siguiente comando

?

tecleamos enter.

Ahora, una vez que se han listado las instrucciones en debug se llevará a cabo la demostración de

escritura de bytes en un programa .COM, el código se desensamblará con debug y se ejecutará.

A partir de ahora se empezará a crear un programa que muestre la cadena “hola”.

Se introducirá la siguiente instrucción en debug:

a

Como se muestra anteriormente entre las instrucciones que soporta debug “ensambla”.

Y nos mostrará una pantalla como la siguiente:

Estaremos en la posición 0100 lo cual es importante y la cifra a la izquierda puede ser muy diferente

para lo cual es trivial en esta práctica.

En esta posición se empezará a codificar el programa, cabe mencionar que después de cada

instrucción teclear (enter).

mov ah, 09

mov dx, 0109

int 21

int 20

db 68

db 6f

db 6c

db 61

and al, 19

hlt

En la siguiente página se muestra cómo debe visualizarse al finalizar.

Teclear “enter” al terminar de codificar.

Ahora se procede a escribir el programa en un archivo .com de la siguiente manera.

Primero se introduce al registro CX qué capacidad ocupa nuestro programa, restando la dirección

final 0110 - 0100 = 10 mediante el siguiente procedimiento:

r cx

se introduce el valor 10, después un enter para confirmar.

Seguido de esto, se nombra el archivo a escribir de la siguiente manera:

n p1.com

Finalmente, se escribe con la instrucción:

w

En la siguiente página se muestra el proceso finalizado.

Ahora se procede a un volcado de memoria a partir de la localización 100 con el siguiente

procedimiento:

d ds:100

Y nos muestra que realmente se alojó la cadena “hola” en nuestro programa.

Una vez confirmado lo anterior, se procede a salir de debug mediante el comando

q

Ahora mediante el comando dir en DOSBox se muestran los archivos en la carpeta y se debe

visualizar el programa “p1.com”

Ahora se procede a ejecutar el programa simplemente tecleando su nombre y presionando enter.

p1

debe aparecer la cadena “hola”

Finalmente la carpeta de nuestra área de trabajo debe finalizar de la siguiente manera:

Nota:

Puede haber problemas con la instrucción G (Go) de debug y puede llegar a abortar la consola para

dicho problema es preciso poner la instrucción hlt al final de cada programa y en caso de utilizar G

utilizarlo en un cierto rango, es decir, si el programa termina en 109 indicar G 107.