Table of Contents

Para desarrollar para el PCP se ha creado el ensamblador ithlasm, un ensamblador básico escrito en python, capaz de crear archivos binarios que se pueden ejecutar directamente en la plataforma.

El ithlasm tiene carácteristicas básicas de preprocesado, como includes, etiquetas, comentarios, etc.

Sintaxis

Ithlasm ignora la capitalización de todos los símbolos, de hecho trabaja en mayúsculas internamente, asi que las instrucciones se pueden escribir en mayúsculas o minúsculas, por el contrario, las directivas del preprocesador se deben de escribir en mayúsculas ya que son analizadas antes de la conversión. Asi mismo ignora los espacios en blanco, tabuladores, etc, salvo el espacio que separa la instrucción y sus parámetros.

La sintaxis básica de una instrucción es:

instrucción <param1>, <param2>… etc

Siendo los parámetros, registros, valores inmediatos, o etiquetas que se substituirán por el inmediato de su dirección en el archivo.

En esta primera versión, los valores inmediatos y los valores de los defines (DEF, DB, DW) se pueden expresar en decimal, hexadecimal (0x..) o binario (0b..)

Las etiquetas se definen usando el símbolo “:” al final de su nombre, y deben de estar en una linea sin más instrucciones. Apuntarán a la posición de memoria de la siguiente línea con datos o código.

Los comentarios empiezan por el símbolo “;”. A partir de ese símbolo el resto de la linea es ignorado cara al preprocesado y ensamblado.

La síntaxis básica de una instrucción sería

Instruccion Operador1, operador2…

Preprocesador

El preprocesador acepta los comentatios y etiquetas como hemos visto, y las siguientes directivas:

Ejemplo

Un ejemplo de código para el ithlasm:

; prueba de texto
        DEF null 0
        
	ld	r1, 1
	ld	r2, texto	; r2 = text start addr
	ld	r9, 3		; putch
	ld	r3, imprime
	ld	r4, fin_impresion
	ld	r5, null
imprime:
	lb	r10, r2		; get char
	beq	r10, r5, r4	; if c = \0x00, end loop
	call	0
	add	r1, r2, r2	; r2 = r2 + 1
	jmp	r3
fin_impresion:
	jmp	r4		; endless loop
texto:
	DS	"Hola viejunos!"