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] sromero | cursos:ensamblador:prologo [18-01-2024 06:53] (actual) – [A quién está dirigido este curso] sromero |
---|
| |
* **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** y **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. |
| |
| |
* 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. |
| |
| |
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. |
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|➡]] ]** |