cursos:ensamblador:introduccion

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
cursos:ensamblador:introduccion [16-01-2024 15:04] – [Compilando el programa BASIC con un compilador] sromerocursos:ensamblador:introduccion [24-01-2024 12:40] (actual) – [El Emulador como otra herramienta de desarrollado] sromero
Línea 15: Línea 15:
  
 \\  \\ 
-{{ cursos:ensamblador:basic.gif?638 |Lenguaje BASIC y su intérprete}}+{{ cursos:ensamblador:basic.gif?638 |Lenguaje BASIC y su intérprete.}}
 \\  \\ 
 ;#; ;#;
Línea 28: Línea 28:
  El cargador BASIC es el pequeño programa en BASIC que el Spectrum y autoejecuta cuando tecleamos ''LOAD ""'', introducimos una cinta y pulsamos PLAY. El Spectrum carga el pequeño programa en BASIC (el "cargador"), y lo ejecuta. En este cargador es donde introduciremos las pocas líneas de BASIC que necesitaremos para lanzar  nuestro programa, haciendo por ejemplo cosas como borrar la pantalla (''CLS''), colocar BASIC por debajo de una posición de memoria para poder disponer del resto de la memoria como libre (''CLEAR''), cargar desde cinta la pantalla de carga del juego (''LOAD "" SCREEN$''), y cargar el código ensamblado de nuestro juego (''LOAD "" CODE'') para, por fin, saltar a la ejecución al mismo (''RANDOMIZE USR'').  El cargador BASIC es el pequeño programa en BASIC que el Spectrum y autoejecuta cuando tecleamos ''LOAD ""'', introducimos una cinta y pulsamos PLAY. El Spectrum carga el pequeño programa en BASIC (el "cargador"), y lo ejecuta. En este cargador es donde introduciremos las pocas líneas de BASIC que necesitaremos para lanzar  nuestro programa, haciendo por ejemplo cosas como borrar la pantalla (''CLS''), colocar BASIC por debajo de una posición de memoria para poder disponer del resto de la memoria como libre (''CLEAR''), cargar desde cinta la pantalla de carga del juego (''LOAD "" SCREEN$''), y cargar el código ensamblado de nuestro juego (''LOAD "" CODE'') para, por fin, saltar a la ejecución al mismo (''RANDOMIZE USR'').
  
-<code basic+<code sinclairbasic
-10 REM Cargador BASIC de un juego+10 REM Cargador BASIC de un juego.
 15 REM Carga la pantalla del juego desde cinta 15 REM Carga la pantalla del juego desde cinta
 20 REM luego con un POKE oculta el mensaje "Bytes:" 20 REM luego con un POKE oculta el mensaje "Bytes:"
Línea 117: Línea 117:
  
 \\  \\ 
-   * Programamos nuestro juego en lenguaje C escribiendo el programa en un editor de textos estándar de nuestra plataforma de desarrollo.+   * Programamos nuestro juego en lenguaje C escribiendo el programa en un editor de textos estándar de nuestra plataforma de desarrollo. Escribiermos por tanto el código de nuestro programa como uno o varios ficheros ''.C'', con sus ficheros de cabecera ''.H''.
  
-   * Grabamos el código de nuestro programa como uno o varios ficheros .C, con sus ficheros de cabecera .H. +   * Mediante el compilador cruzado, compilamos los ficheros ''.C'' y obtenemos un fichero binario de código máquina, normalmente con un cargador BASIC incluído al principio del mismo.
- +
-   * Mediante el compilador cruzado, compilamos los ficheros .C y obtenemos un fichero binario de código máquina, normalmente con un cargador BASIC incluído al principio del mismo.+
  
    * Cargamos ese código máquina en nuestro Spectrum o emulador con un simple ''LOAD ""'' y el programa se carga y ejecuta como cualquier otro juego comercial.    * Cargamos ese código máquina en nuestro Spectrum o emulador con un simple ''LOAD ""'' y el programa se carga y ejecuta como cualquier otro juego comercial.
Línea 142: Línea 140:
  
 \\  \\ 
-   * Programamos nuestro juego en lenguaje ensamblador escribiendo el programa en un editor de textos estándar de nuestra plataforma de desarrollo.+   * Programamos nuestro juego en lenguaje ensamblador escribiendo el programa en un editor de textos estándar de nuestra plataforma de desarrollo. Escribiremos por tanto el código de nuestro programa como uno o varios ficheros ''.ASM''.
  
-   * Grabamos el código de nuestro programa como uno o varios ficheros .ASM. +   * Mediante el ensamblador cruzado, ensamblamos los ficheros ''.ASM'' y obtenemos un fichero binario de código máquina, normalmente con un cargador BASIC incluído al principio del mismo.
- +
-   * Mediante el ensamblador cruzado, ensamblamos los ficheros .ASM y obtenemos un fichero binario de código máquina, normalmente con un cargador BASIC incluído al principio del mismo.+
  
    * Cargamos ese código máquina en nuestro Spectrum o emulador con un simple ''LOAD ""'' y el programa se carga y ejecuta como cualquier otro juego comercial.    * Cargamos ese código máquina en nuestro Spectrum o emulador con un simple ''LOAD ""'' y el programa se carga y ejecuta como cualquier otro juego comercial.
Línea 160: Línea 156:
 ; Rutina de multiplicación en lenguaje ensamblador: ; Rutina de multiplicación en lenguaje ensamblador:
 ; ;
-MULTIPLICA: Multiplica DE*BC +Mult_HL_DE: Multiplica DE*BC 
-      Entrada:        DE: Multiplicando, +; Entrada:   DE: Multiplicando, 
-                      BC: Multiplicador +           BC: Multiplicador 
-      Salida:         HL: Resultado.+; Salida:    HL: Resultado. 
 +; Modifica:  AF, BC  
 + 
 +Mult_HL_DE: 
 +    ld hl, 0                  ; HL = 0
  
-MULTIPLICA+multhlde_loop
-        LD HL0            ; HL = 0 +    add hlde                ; Sumamos HL = HL + DE 
-MULTI01: +    dec bc 
-        ADD HL, DE          ; Sumamos HL = HL + DE +    ld ab 
-        DEC BC +    or c 
-        LD AB +    jr nzmulthlde_loop      ; Lo repetimos BC veces 
-        OR C +    ret                       ; Volver de la rutina
-        JR NZMULTI01      ; Lo repetimos BC veces +
-        RET                 ; Volver de la rutina+
 </code> </code>
  
Línea 279: Línea 277:
 ZX Spin tiene incluso un ensamblador integrado que nos permitirá ensamblar programas y ponerlos en memoria directamente desde el emulador, o una opción para cargar bloques de datos binarios desde fichero o guardar porciones de la memoria a fichero, funcionando además bajo Wine en sistemas Linux. ZX Spin tiene incluso un ensamblador integrado que nos permitirá ensamblar programas y ponerlos en memoria directamente desde el emulador, o una opción para cargar bloques de datos binarios desde fichero o guardar porciones de la memoria a fichero, funcionando además bajo Wine en sistemas Linux.
  
-"**Debuggers**" y "**Memory Browsers**" son herramientas valiosísimas para desarrollar, por lo que recomendamos descargar uno para nuestro Sistema Operativo que tenga al menos esas 2 opciones, y avanzar en el curso haciendo uso de ellas y aprendiendo a manejarlas, ya que es una pequeñísima inversión de tiempo que rentabilizaremos rápidamente.+"**Debuggers**" y "**Memory Browsers**" son herramientas valiosísimas para desarrollar, por lo que recomendamos descargar uno para nuestro Sistema Operativo que tenga al menos esas 2 opciones, y avanzar en el curso haciendo uso de ellas y aprendiendo a manejarlas, ya que es una pequeñísima inversión de tiempo que rentabilizaremos rápidamente (en el Anexo 1 de este curso veremos cómo utilizar el depurador/debugger de Fuse).
  
 FUSE y ZX Spin no son los únicos emuladores que contienen este tipo de herramientas, hemos citado estos porque son "clásicos" (de hecho, varios emuladores nuevos han surgido después de ellos que incorporan muchas más opciones, como **ZEsarUX** o **Spectaculator**), pero podemos elegir aquel que mejor conozcamos o que tenga un interfaz más amigable para nosotros. FUSE y ZX Spin no son los únicos emuladores que contienen este tipo de herramientas, hemos citado estos porque son "clásicos" (de hecho, varios emuladores nuevos han surgido después de ellos que incorporan muchas más opciones, como **ZEsarUX** o **Spectaculator**), pero podemos elegir aquel que mejor conozcamos o que tenga un interfaz más amigable para nosotros.
  • cursos/ensamblador/introduccion.1705417458.txt.gz
  • Última modificación: 16-01-2024 15:04
  • por sromero