Hola mundo en ensamblador con debug sobre dosbox

Con dosbox podemos usar la versión del programa «debug» para DOS si la bajamos de aquí: debug.zip

O utilizar dosbox-x (un fork de dosbox que mola mucho) que ya lo trae por defecto.

En otra futura entrada hablaremos del modo debug de dosbox ya que es crema de la buena y nos puede servir para desproteger «mochilas» de software, vidas infinitas en juegos, saltarnos la validación o protección anticopia de algún juego de msdos, …

En esta entrada solamente vamos a ver como lanzar debug sobre dosbox y crear por ejemplo un hola mundo en ensamblador.

Lo primero es lanzar dosbox (vamos a suponer que lo tienes instalado así como wget y unzip) desde el directorio en el que tengamos debug.com (el zip contiene el archivo debug.com).

$ wget "https://mierda.tv/wp-contenido/uploads/2018/01/DEBUG.zip"
$ wget "https://mierda.tv/wp-contenido/uploads/2018/01/EDIT.zip"
$ unzip DEBUG.zip
$ unzip EDIT.zip
$ rm DEBUG.zip EDIT.zip
$ dosbox -c "keyb sp" -c "mount c ." -c "c:" -c "cls" 

Veremos algo así como esto:

Digamos que ya tenemos debug listo para usarlo.
Con el editor de textos edit (versión de freedos) vamos a poder editar un archivo llamado «hola.asm» escribiendo «edit hola.asm», guardando los cambios con control+s y saliendo con alt+x.

el contenido de ese archivo puede ser algo así como este:

a 0100
mov ah,9
mov dx,108
int 21
ret
db "hola mundo!$"

n c:hola.com

r bx 0

r cx 15

w

Lo ejecutaremos con debug así:

debug > hola.asm

Eso generará un archivo llamado hola.com que será ejecutable.

Para entender un poco el tema:

* Los archivos .com siempre se ejecutan si no se especifica la extensión antes que los exe. Por ejemplo si tenemos un programa llamado hola.exe y otro llamado hola.com y escribimos simplemente «hola» se ejecutará hola.com y NO hola.exe.

* Los archivos .com siempre comienzan 256 bytes en el segmento (0x100 == 256).

* Antes de int21 indicamos en el acumulador AH la función 09h (display string) (lo hacemos así: mov ah,9)

* En el registro de datos dx movemos el contenido que esté en 0108 (que será la cadena de texto hola mundo!».

* int 0x21 (int 21) llama a los servicios dos, Interrupción 21h.

* nueva linea 0d 0a (13 10) https://en.wikipedia.org/w/index.php?title=0D_0A&redirect=no

* Aquí podemos obtener documentación muy buena sobre debug: http://thestarman.pcministry.com/asm/debug/debug2.htm

Con debug por tanto vemos que podemos generar archivos ejecutables en ensamblador aunque podemos hacer bastantes cosas más claro.

Dosbox puede ponerse en pantalla completa con alt+enter (dosbox-x lo mismo) y se sale de la pantalla completa con la misma combinación de teclas.

De dosbox salimos escribiendo exit.

Aunque debug nos permite bastantes cosas hemos de tener en cuenta que dosbox-x compilado activando el modo debug heavy nos permitirá mucho mucho más y de forma muy molona.

Una captura del modo debug de dosbox:

 

¿Le ha gustado el contenido?

Si le ha gustado y le ha sido de utilidad puede donar aquí https://paypal.me/mierdatv .  
También puede escribir un comentario si lo considera oportuno.  
 

Comentarios 7

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *