cursos:ensamblador:prologo

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:prologo [31-12-2023 14:52] – [Objetivos y desarrollo del curso] sromerocursos:ensamblador:prologo [18-01-2024 06:53] (actual) – [A quién está dirigido este curso] sromero
Línea 64: Línea 64:
  
   * **Sistemas Decimal, Binario y hexadecimal**: cómo expresar un valor numérico en diferentes sistemas de representación.   * **Sistemas Decimal, Binario y hexadecimal**: cómo expresar un valor numérico en diferentes sistemas de representación.
-  * **Operaciones lógicas entre bits**: Qué es una operación AND, OR, XOR y NOT entre 2 bits o 2 valores.+ 
 +  * **Operaciones lógicas y aritméticas entre bits**: Qué es una operación **AND****OR****XOR** **NOT** entre 2 bits o 2 valores, cómo se representan valores con signo en binario, y cómo se suman o restan valores representados con este sistema. 
   * **Nociones de programación al menos en BASIC del Spectrum**.   * **Nociones de programación al menos en BASIC del Spectrum**.
 +
   * **Conocimientos básicos sobre compiladores y ensambladores**: al menos, saber que se pueden escribir los programas en ficheros de texto y compilarlos/ensamblarlos para obtener programas ejecutables.   * **Conocimientos básicos sobre compiladores y ensambladores**: al menos, saber que se pueden escribir los programas en ficheros de texto y compilarlos/ensamblarlos para obtener programas ejecutables.
 +
   * **Conocimientos básicos sobre emulación**: ser capaz de ejecutar un emulador de ZX Spectrum y cargar en él los ficheros TAP que obtendremos como resultado de nuestros ejercicios y pruebas.   * **Conocimientos básicos sobre emulación**: ser capaz de ejecutar un emulador de ZX Spectrum y cargar en él los ficheros TAP que obtendremos como resultado de nuestros ejercicios y pruebas.
  
Línea 72: Línea 76:
  
   * Spectrum Machine Language For The Absolute Beginner (William Tang - Melbourne House).   * Spectrum Machine Language For The Absolute Beginner (William Tang - Melbourne House).
 +
   * Codigo Maquina ZX Spectrum Para Principiantes (William Tang - INDESCOMP), traducción del anterior.   * Codigo Maquina ZX Spectrum Para Principiantes (William Tang - INDESCOMP), traducción del anterior.
 +
   * ZX Spectrum Codigo Maquina Simplificado Volumen 1 y 2 (James Walsh - Colección m/b).   * ZX Spectrum Codigo Maquina Simplificado Volumen 1 y 2 (James Walsh - Colección m/b).
  
- No obstante, asumo que si estás leyendo estas líneas es porque tienes tienes estos conocimientos, ya que no se me ocurre otro motivo por el cual una persona podría acercarse a conocer el lenguaje máquina de un ordenador aparecido en 1982 que ya no se comercializa, con el objetivo de aprender a escribir programas para un procesador de 8 bits, que van a disfrutar apenas unos cientos o miles de personas.+ No obstante, asumo que si estás leyendo estas líneas es porque tienes estos conocimientos, ya que no se me ocurre otro motivo por el cual una persona podría acercarse a conocer el lenguaje máquina de un ordenador aparecido en 1982 que ya no se comercializa, con el objetivo de aprender a escribir programas para un procesador de 8 bits, que van a disfrutar apenas unos cientos o miles de personas.
  
- Y para eso he escrito este documento, para dar una introducción al mundo de la programación en ensamblador de Z80 para Sinclair ZX Spectrum y que podáis crear desde pequeñas rutinas a increibles juegos. + Y para eso he escrito este documento, para dar una introducción al mundo de la programación en ensamblador de Z80 para Sinclair ZX Spectrum y que podáis crear desde pequeñas rutinas a increibles juegos.
  
  
Línea 123: Línea 129:
  La escritura de un programa en ensamblador de Z80 para ZX Spectrum es un proceso interdisciplinar, que requiere conocer:  La escritura de un programa en ensamblador de Z80 para ZX Spectrum es un proceso interdisciplinar, que requiere conocer:
  
-  El hardware interno del microprocesador Z80: qué registros podemos utilizar para realizar operaciones, qué tamaño tienen, y cómo funciona el procesador a la hora de ejecutar código. +  El hardware interno del microprocesador Z80: qué registros podemos utilizar para realizar operaciones, qué tamaño tienen, y cómo funciona el procesador a la hora de ejecutar código. 
-  El juego de instrucciones del microprocesador Z80: qué instrucciones existen, qué efecto tienen y sobre qué registros u operandos pueden trabajar. + 
-  El "sistema operativo" del ordenador que tiene dicho procesador: necesitaremos conocer algunos aspectos de la ROM del ZX Spectrum, es decir: qué rutinas útiles y variables del sistema aprovechables nos puede proporcionar. +  El juego de instrucciones del microprocesador Z80: qué instrucciones existen, qué efecto tienen y sobre qué registros u operandos pueden trabajar. 
-  La organización del mapa de memoria del ordenador: dónde podemos encontrar las variables del sistema, la zona de videomemoria, la zona de pila, etc. + 
-  El funcionamiento de sus dispositivos de entrada/salida (I/O) para, por ejemplo, leer el teclado o el estado de un joystick. +  El "sistema operativo" del ordenador que tiene dicho procesador: necesitaremos conocer algunos aspectos de la ROM del ZX Spectrum, es decir: qué rutinas útiles y variables del sistema aprovechables nos puede proporcionar. 
-  La sintaxis del Lenguaje Ensamblador utilizado para generar código binario para el Z80, y cómo podemos ensamblar ("compilar") un programa en Lenguaje Ensamblador para obtener dicho código binario o "código máquina"+ 
-  Cómo introducir el código máquina resultante del ensamblado de nuestro código ensamblador en la memoria del Spectrum para poder ejecutarlo. +  La organización del mapa de memoria del ordenador: dónde podemos encontrar las variables del sistema, la zona de videomemoria, la zona de pila, etc. 
-  Cómo atajar determinados problemas habituales: sumar, restar, multiplicar, dividir, realizar comparaciones, bucles, acceder a la memoria, y cómo utilizarlo para imprimir texto, imprimir gráficos, leer el teclado, etc.+ 
 +  El funcionamiento de sus dispositivos de entrada/salida (I/O) para, por ejemplo, leer el teclado o el estado de un joystick. 
 + 
 +  La sintaxis del Lenguaje Ensamblador utilizado para generar código binario para el Z80, y cómo podemos ensamblar ("compilar") un programa en Lenguaje Ensamblador para obtener dicho código binario o "código máquina". 
 + 
 +  Cómo introducir el código máquina resultante del ensamblado de nuestro código ensamblador en la memoria del Spectrum para poder ejecutarlo. 
 + 
 +  Cómo atajar determinados problemas habituales: sumar, restar, multiplicar, dividir, realizar comparaciones, bucles, acceder a la memoria, y cómo utilizarlo para imprimir texto, imprimir gráficos, leer el teclado, etc.
  
  Debido a que es necesario conocer tanta información de tantas áreas, a veces es complicado ofrecer un camino lineal para aprender, por lo que muchas veces haremos referencia a algunos términos (junto a una breve explicación de ellos) que serán ampliados después en otro momento. Por eso, a veces no bastará una única lectura para ver el todo, sino que el repaso de explicaciones anteriores terminará de rellenar los huecos.  Debido a que es necesario conocer tanta información de tantas áreas, a veces es complicado ofrecer un camino lineal para aprender, por lo que muchas veces haremos referencia a algunos términos (junto a una breve explicación de ellos) que serán ampliados después en otro momento. Por eso, a veces no bastará una única lectura para ver el todo, sino que el repaso de explicaciones anteriores terminará de rellenar los huecos.
Línea 136: Línea 149:
  Nuestra recomendación al lector es que haga una primera lectura general del curso para obtener unos conocimientos generales de la materia, y después una segunda lectura en la cual relacionará todos los conceptos entre sí.  Nuestra recomendación al lector es que haga una primera lectura general del curso para obtener unos conocimientos generales de la materia, y después una segunda lectura en la cual relacionará todos los conceptos entre sí.
  
 + Para ensamblar los programas de ejemplo del curso hemos utilizado el ensamblador **pasmo**, disponible en https://pasmo.speccy.org. Podemos en general usar la versión estable 0.5.5 para todo el curso, (excepto si en algún momento necesitamos utilizar la opción ''--listing'', que requiere la 0.6-beta). También se puede seguir el curso con otros ensambladores como **sjasmplus** o **z80asm** con unos cambios mínimos en el código.
 +
 +
 +\\ 
 +**[ [[.:indice|⬉]] | [[.:indice|⬅]] | [[.:introduccion|➡]] ]**
  • cursos/ensamblador/prologo.1704034362.txt.gz
  • Última modificación: 31-12-2023 14:52
  • por sromero