Programar en ensamblador con TASM en Doxbox
September 13, 2008 2:54 pm GNU/Linux, Lenguaje Ensamblador, Programación
Resulta que a pesar de tener alternativas libres y más actualizadas para trabajar en lenguaje ensamblador (sintaxis de Intel), en la universidad, nos piden que trabajemos con TASM. Quiero creer que es porque el laboratorio que se asignó para la materia tiene computadoras IBM PC (no sé exactamente el modelo pero, creo son del año en que nací) bastante viejas con un flamante Windows 98. El caso es que, era una tontería (al menos para mi) arrancar la maquina virtual de Windows XP para trabajar en TASM, así que, terminé instalando TASM en Dosbox
.
Dosbox según Wikipedia:
DOSBox es un emulador que recrea un entorno similar al sistema DOS con el objetivo de poder ejecutar programas y videojuegos originalmente escritos para el sistema operativo MS-DOS de Microsoft en ordenadores más modernos o en diferentes arquitecturas (como Macintosh). También permite que estos juegos funcionen en otros sistemas operativos como GNU/Linux.
DOSBox es software libre, y está disponible para muchos sistemas operativos, como Linux, FreeBSD, Windows, Mac OS X, OS/2 y BeOS. Incluso recientemente ha sido adaptado a las consolas portatiles PSP y GP2X.
La versión de Dosbox que estoy utilizando es la 0.72. Cabe destacar que Dosbox utiliza un fichero de configuración que hay que crear con la siguiente instrucción: config -writeconf dosbox.conf, en la línea de comandos del MSDOS al arrancar Dosbox, esto, creará un archivo dosbox.conf en el directorio home de nuestro usuario (/home/soullost, en mi caso). Además del archivo de configuración de Dosbox, otra de las primeras cosas que tenemos que hacer es crear la Unidad C:\, ya qué, Dosbox por defecto sólo cuenta con una unidad virtual llamada Z:\, donde, dispone de los archivos elementales de un ambiente normal de DOS. Para tal motivo contamos con el comando mount, muy al estilo Unix (para más detalles, consultar el Wiki de Dosbox), procedemos a crear la unidad C:\ a partir de un directorio físico de nuestro disco: mount c /home/soullost/dos. Hay que tener en cuenta que el montaje sólo dura hasta que cerremos el programa, podemos, hacer que se cargue automáticamente al iniciar Dosbox mediante su archivo de configuración, especificamente en la sección [autoexec]. Quedando:
[autoexec] # Lines in this section will be run at startup. mount c /home/soullost/dos c:
Ahora si, estamos listos para instalar programas en ambiente DOS. Yo instalé TASM y un IDE para programar en ensamblador:
El IDE Asm Edit lo pueden descargar de la siguiente dirección: http://www.o-love.net/asmedit/ae_down.html. Tiene un ambiente muy parecido al famoso Turbo C++, por lo que, podemos agilizar la tarea de compilar y ejecutar los programas que realizamos (eso de usar comandos para compilar cada programa que se realiza, es muy aburrido, además necesitaba un editor para crear los programas porque Dosbox no dispone de ninguno), también, se puede invocar al turbo debugger desde ahí y regresar al editor cuando terminemos de usarlo. Sólo tuve un único problema al configurar el Asm Edit y es que, los archivos DPMI16BI.OVL y RTM.EXE son incompatibles con la versión que instalé de TASM (5.0), basta entonces, con reemplazarlos por los archivos que se encuentran en la carpeta BIN de TASM (C:\TASM\BIN, no es necesario usar conmandos de DOS, se puede copiar desde nautilus, en caso de GNOME). Aqui algunas capturas de cómo he configurado el IDE:
Hay que cambiar los directorios donde instalamos el TASM (TASM.EXE, TLINK.EXE, TD.EXE). Ojo, para que queden grabadas para la próxima vez que se inicie el programa hay que seleccionar Options > Save [ASMEDIT.DSK]:
También, los directorios donde se guardarán los archivos generados durante la compilación:
Si todo está correcto, puede empezar a ejecutar sus programas en ensamblador:
Por último, les dejo mi archivo de configuración de dosbox para ganar un poco de velocidad al ejecutar Asm Edit (ya que se sentía lento, antes de hacer las modificaciones), claro, que he probado y me han funcionado a mi; y, el archivo fuente de Hola, que tal!. que se muestra en las capturas:
Archivo ASM.
;***************************************************************************
; Nombre del programa: MENSAJE.ASM
;***************************************************************************
; COMANDO DE ENSAMBLE : MASM MENSAJE;
; COMANDO DE ENLACE : LINK MENSAJE;
; COMANDO DE EJECUCION : MENSAJE [Enter]
;***************************************************************************
;
; Define el modelo de memoria
;
.MODEL SMALL ; Modelo de memoria
.DATA ; Segmento de datos
Mensaje DB 'Hola, que tal !.$' ; Cadena a desplegar
.STACK ; Se necesita una PILA.
.CODE ; Area de codigo
Empieza: ; Etiqueta de comienzo de programa
mov Ax, @Data ; Inicializa DS con la
mov Ds, Ax ; direccion de @Data
mov Dx, Offset Mensaje ; Direccion de Mensaje
mov Ah, 9 ; en Dx para poder desplegarlo
Int 21h ; a traves de la Int 21 de MS-DOS.
mov ax,4c00h ; Regresa a MS-DOS por medio de la
int 21h ; funcion 4c.
END Empieza ; Fin del programa
Archivo de configuración: Descargar.
Nos vemos.
Califica el tema:Temas Relacionados:












September 13th, 2008 at 5:24 pm
Bueno, al menos a ti tratan de enseñarte ensamblador.
En mi universidad no tuve que pasar por eso, desafortunadamente.
September 13th, 2008 at 5:45 pm
hugo_dc ps que pena, aquí también se hace lo que se puede con algunas materias. Aunque dicen que ASM ya no es cotizado, sirve de base para empezar a programar en microcontroladores (por ejemplo), muy útil en robotica o cosas por el estilo (mi opinión claro).
Haber si puedo postear cosas de ASM después, igual te interesen. Saludos.
September 19th, 2008 at 3:37 pm
Ensamblador no mames que hueva xD
September 20th, 2008 at 12:02 am
th3r0rn, mejor dí que no eres capaz de comprenderlo XD.