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
Acabo de terminar de ver el documental Iraq For Sale The War Profiteers (Iraq a la venta. Especuladores de la guerra). Es un documental que habla sobre las ganancias de varias empresas a expensas de la invasión de los Estados Unidos en Iraq (que lleva ya 5 años). Ganancias a costas de no simplemente materia prima (por ejemplo, de ahorrar en comida), si no también, ahorrar de todo lo que sea posible para beneficiar a personas con avaricia y sin escrúpulos. Por ejemplo, hablan de como se aprovechan de civiles comunes y corrientes para hacer mano de obra no profesional, que al no haber mano de obra profesional, genera otro problemas, bueno, se vuelve todo una cadenita que le ha generado miles de millores de dolares y varias muertes al gobierno de EUA. Que como siempre, los únicos beneficiados son los grandes mandos de esas corporaciones y todos sus involucrados.
Tendrán que verlo, está interesante y es una realidad que a muchos de los ciudadanos de EUA, les avergüenza. Es el problema de siempre y de muchos países, los gobernante se preocupan más por generar dinero en beneficio propio, que de los ciudadanos (que generan gran parte del dinero de un país).
Mientras escribía esto, se fue la luz en mi colonia (al otro lado de la calle y en toda la ciudad, había luz!), así que seguro ya pasaron los dos primeros capítulos. Estoy ancioso por verlos y espero, que el drama haya mejorado más que en su tercera temporada, ya que para mi, bajó bastante..