Introducción a la programación en ensamblador con Pasmo: Compilando y probando un "Hola mundo"

Click here to see in English

Pasmo es un ensamblador cruzado para Z80, escrito en C++ estándar que compila con facilidad en múltiples plataformas. Actualmente genera código obejto en los siguientes formatos: binario crudo, Intel HEX, PRL para RSX de CP/M Plus, Plus3Dos (Spectrum +3 disco), TAP, TZX y CDT (imagen de cinta para emuladores de Spectrum y Amstrad CPC), AmsDos (Amstrad CPC disco) y MSX (para uso con BLOAD desde disco en Basic). Podemos bajarlo de su web oficial. No requiere ningun tipo de instalación, es un simple ejecutable, que tendremos que poner en alguna carpeta que esté en el path o bien directamente en la carpeta donde vayamos a compilar.

Con cualquier editor de texto o código (con el mismo notepad de Windows vale) generamos un fichero Pasmo01.asm con el siguiente contenido (al final del tutorial se puede descargar todo en un zip):

org #6000
TXT_OUTPUT    EQU #BB5A
KM_WAIT_CHAR    EQU #BB06

LD A, 'H'
CALL TXT_OUTPUT
LD A, 'o'
CALL TXT_OUTPUT
LD A, 'l'
CALL TXT_OUTPUT
LD A, 'a'
CALL TXT_OUTPUT
LD A, ' '
CALL TXT_OUTPUT
LD A, 'm'
CALL TXT_OUTPUT
LD A, 'u'
CALL TXT_OUTPUT
LD A, 'n'
CALL TXT_OUTPUT
LD A, 'd'
CALL TXT_OUTPUT
LD A, 'o'
CALL TXT_OUTPUT

CALL KM_WAIT_CHAR

RET

Un simple programilla que utiliza la función TXT_OUTPUT del firmware. Tenemos que compilarlo de la siguiente manera:

pasmo Pasmo01.asm Pasmo01.bin

Si todo ha ido bien, se nos habrá generado un nuevo fichero Pasmo01.bin, que ya se puede ejecutar en el Amstrad CPC. Para las pruebas, vamos a cargar los binarios generados en un emulador, para ello tendremos que generar un fichero dsk (imagen de disco) con el binario que hemos compilado, para poder cargarlo/ejecutarlo en el emulador. Para ello podemos utilizar por ejemplo ManageDSK o CPCDiskXP.

Para generar un Dsk con CPCDiskXP, ejecutamos el programa, pulsamos en "Dsk Editor", luego pulsamos en "New" seleccionamos el formato por defecto "CPC Data" y pulsamos Ok. Ahora pulsamos "Add Files" para añadir nuestro binario, buscamos el directorio donde hemos compilado y seleccionamos el fichero Pasmo01.bin, ahora CPCDiskXP nos preguntará si queremos añadir la cabecera Amsdos, pulsamos Sí, dejamos los valores por defecto y pulsamos Ok. Ahora pulsamos el botón "Save" para guardar nuestro Dsk, yo lo he llamado "Pasmo01.dsk" en el mismo directorio. Con la última versión de CPCDiskXP también podemos generar un dsk desde la línea de comandos (o un bat) de la siguiente forma:

CPCDiskXP -File Pasmo01.bin -AddAmsdosHeader 6000 -AddToNewDsk Pasmo01.dsk

Cargamos el Dsk en nuestro emulador favorito (Yo suelo usar CPCE y Winape) y lo ejecutamos con run"Pasmo01 y veremos lo siguiente:

 

Podéis bajar un zip con todos ficheros aquí: Introduccion_a_la_programacion_en_ensamblador_con_Pasmo_Compilando_y_probando_un_Hola_mundo.zip

 

www.CPCMania.com 2012