Hace poco comentaba como el ensamblador es una de mis asignaturas pendientes, así que con la excusa del blog, voy a obligarme un poco a retomarlo, a continuación voy a exponer un programa sencillo, el cual me ayudo mucho a iniciarme con el ensamblador, gracías a los vídeos de Fernando García de BitVision (BitVision – Curso Assembler Rápido para MSX (z80st.es)).
El código es el siguiente:
Descargar: https://www.darknd.net/wp-content/uploads/prog1.asm
Cosas a tener en cuenta:
ld (destino, origen) : cargamos el valor de origen, en destino.
add (destino, origen): sumamos el valor de origen, con el valor de destino, y lo guardamos en este último.
Una vez escrito el programa, lo compilaremos con sjasm (http://www.xl2s.tk/sjasm42c.zip), y nos generará un fichero .bin, que podremos añadir a un disquete virtual con Catapult de OpenMSX por ejemplo.
Una vez hecho esto, arrancamos nuestro OpenMSX, y ejecutamos los siguientes comandos:
Los comandos poke(dirección memoria, valor), grabaran en las direcciones de memoria los valores asignados, en este caso (2 y 3, en h8600 y h8601 respectivamente).
Luego cargaremos nuestro programa con bload, y se ejecutará, la suma de los valores, que se guardará en la dirección h8602. Con print peek podremos ver el valor guardado en dicha dirección.
Algo interesante que podemos hacer, y que en un futuro nos vendrá genial para las funciones de la BIOS, es añadir un alias a diferentes valores de memoria.
El MSX en su bios trae funciones predefinidas, las cuales podemos consultar en la siguiente web, MSX BIOS calls (grauw.nl) .
En este caso, vamos a asignarles a las direcciones h8600 y h8601 los alias, NUM1 y NUM2, y a h8602 el alias RESULT. Esto no cambiará el funcionamiento del programa, pero más adelante, nos puede ayudar a identificar direcciones que definamos para un uso concreto de una manera más agradable a la vista.