User Tools

Site Tools


herramientas_pcp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
herramientas_pcp [2012/10/30 18:27] xzakoxherramientas_pcp [2012/11/18 22:02] (current) – [Preprocesador] xzakox
Line 13: Line 13:
 Siendo los parámetros, registros, valores inmediatos, o etiquetas que se substituirán por el inmediato de su dirección en el archivo. 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 se deben especificar en notación decimal, si bien en futuras versiones se planea soportar hexadecimal binario.+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. 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.
Line 21: Line 21:
 La síntaxis básica de una instrucción sería La síntaxis básica de una instrucción sería
  
-===== Preprocesador =====+ Instruccion Operador1, operador2... 
 + 
 +====== Preprocesador ======
  
 El preprocesador acepta los comentatios y etiquetas como hemos visto, y las siguientes directivas: El preprocesador acepta los comentatios y etiquetas como hemos visto, y las siguientes directivas:
  
   * **INCLUDE** "archivo" : Incluye el contenido del archivo referenciado en la posición de la directiva   * **INCLUDE** "archivo" : Incluye el contenido del archivo referenciado en la posición de la directiva
 +  * **DEF** <símbolo> <valor>: Define un símbolo con un valor constante asociado. Este símbolo se puede usar en el código como valor inmediato, siendo este substituido antes del ensamblado.
   * **DB** valor1, valor2... : Inserta en el código los bytes de datos especificados a continuación, separados por comas en caso de ser más de uno. Deben expresarse en decimal   * **DB** valor1, valor2... : Inserta en el código los bytes de datos especificados a continuación, separados por comas en caso de ser más de uno. Deben expresarse en decimal
   * **DW** valor1, valor2... : Inserta en el código las palabras de datos especificadas a continuación, separadas por comas en caso de ser más de una. Deben expresarse en decimal. Las palabras se alinean para ocupar 4 bytes.   * **DW** valor1, valor2... : Inserta en el código las palabras de datos especificadas a continuación, separadas por comas en caso de ser más de una. Deben expresarse en decimal. Las palabras se alinean para ocupar 4 bytes.
   * **DS** "Cadena de texto" : Inserta en el código los bytes de la cadena de caracteres especificada entre comillas, añadiendo un carácter 0x00 al final de la misma.   * **DS** "Cadena de texto" : Inserta en el código los bytes de la cadena de caracteres especificada entre comillas, añadiendo un carácter 0x00 al final de la misma.
 +  * **STACK** valor: Define un espacio reservado para la pila del programa de "valor" palabras. Internamente el preprocesador substituye esto por las instrucciones necesarias para reservar esa memoria, e iniciar el puntero de pila en este punto. Es recomendable usar esta directiva al inicio del programa.
 +
  
-==== Ejemplo ====+====== Ejemplo ======
  
 Un ejemplo de código para el //ithlasm//: Un ejemplo de código para el //ithlasm//:
Line 36: Line 41:
 <code> <code>
 ; prueba de texto ; prueba de texto
 +        DEF null 0
 +        
  ld r1, 1  ld r1, 1
  ld r2, texto ; r2 = text start addr  ld r2, texto ; r2 = text start addr
Line 41: Line 48:
  ld r3, imprime  ld r3, imprime
  ld r4, fin_impresion  ld r4, fin_impresion
- ld r5, 0+ ld r5, null
 imprime: imprime:
  lb r10, r2 ; get char  lb r10, r2 ; get char
herramientas_pcp.1351618063.txt.gz · Last modified: 2012/10/30 18:27 by xzakox