Habiendo llegado a este punto, creo que ya vamos necesitando un ensamblador: Dejemos el TASM, el MASM e incluso el A86 a los expertos. Yo les recomiendo para un humilde pero efectivo comienzo el CHASM assembler, que es shareware y se consigue en casi cualquier lado. El programa en si ocupa menos de 64 kb y trae un curso de assembler en gringo mejor que este, y un manual muy completo. Ademas compila directamente a com, por lo cual se puede hacer el programa con un procesador de texto cualquiera (yo uso el galaxy-shareware-), compilarlo, probarlo, si no anda corregirlo y volverlo a compilar sin mayores ceremonias. El chasm pasa de un programa escrito en un procesador de texto (fuente) como este a un programa com, ejecutable.Si la sintaxis no es la adecuada el programa no va a funcionar, pero el chasm te va haciendo un reporte en la pantalla de los errores que cometiste, para que los corrijas. Los programas estan divididos en tres o cuatro campos: . . . etiqueta.opera- .operando .; comentarios .cion. . . (8bytes). (8) . (sin limite) . sin limite . . . la etiqueta es una palabra de hasta 8 letras que indica la direccion donde esta dicha instruccion. Yo usando etiquetas me independizo de la direccion efectiva de la instruccion: la reemplazo por un nombre que el ensamblador despues a su vez reemplaza por la direccion. Eso agiliza todo: es mucho mas facil acordarse de "sacabit" que de "03540h". El operando es el "verbo" de esta oracion, es el lugar donde va la instruccion que se va a ejecutar. Y el operando es el lugar donde se pone el registro, el numero o la direccion que va a sufrir esa operacion: seria "el predicado" de la instruccion. Siguiendo con la analogia, los comentarios serian las notas que nos pone la maestra. Los comentarios son imprescindibles: es la unica manera de que dos meses despues de hacer el programa te acuerdes porque hiciste determinada cosa, sin tardar el mismo tiempo que tardaste en escribir el programa. El que no escribe comentarios se ve obligado a aprender de nuevo todo con cada programa y pierde el triple de tiempo que si los escribiera. El programa se divide, verticalmente, en procedimientos: cada procedimiento empieza con un nombre, seguido de la frase "proc near" (o "proc far", si sale del segmento actual) y termina con la frase "endp". Dentro de cada procedimiento solo puede haber una instruccion "ret" Las variables llevan una etiqueta, la pseudoinstruccion "db" y los datos, entre comillas simples (') si son caracteres o sin comillas si son numericos. vamos a los ejemplos: ;clasico entre los clasicos: el primer programa en todos ;los idiomas. homun proc near ;empieza el procedimiento "homun" mov dx,offset(mensaje) ; esto significa "cargue ;en dx la direccion ;donde comienza la ;variable mensaje" mov ah,09h ;voy a usar la interrupcion 21 ;funcion 09, que imprime una ;cadena o string cuya direccion ;esta en dx hasta que encuentra un ;signo $ (que no imprime) int 21h ;ejecuto la interrupcion int 20h ;salgo al D.O.S. endp ;termina el procedimiento mensaje db 'Hola, mundo! ',0dh,0ah,'$' ;he aqui el mensaje ;la "0dh" es el carriage return, o cr, hace que el cursor ;vuelva a la primera columna, la 0ah es el line feed o lf, ;hace que se pase a la linea siguiente. El signo $ sirve ;para que la int 21 sepa donde termina el mensaje, si se ;omite, sigue sacando por pantalla todo lo que hay en la ;memoria hasta que encuentra un signo $. Prueben sacar ;algun elemento y veran lo que pasa. fijense que si uno idea o encuentra algun procedimiento exitoso no necesita volver a copiarlo integro desde el principio cada vez que hace un programa: se puede guardarlo en un archivo de texto e incorporarlo al programa en asembler cuando uno lo necesita: P. ej. yo tengo las rutinas "cls", "etec" e "inarch" y necesito incorporarlas al programa "fucklamm.asm" hago "copy fuklamm.asm+cls+etec+ inarch" y el D.O.S me los une en un solo archivo. despues solo tengo que hacer calls a esos procedimientos y listo. Otra posibilidad es tener un "esqueleto", un programa .asm con todas las rutinas, y hacer el programa sobre este esqueleto, borrando las rutinas que no voy a usar. Yo uso los dos procedimientos, segun el largo del programa. (continuara?) "Esa computadora que te da lastima tirar, donala al museo de computacion!"