ZX Format #01: Para Programadores: Introducción al Lenguaje Ensamblador

Ensamblador en imágenes para "dummies" y no solo. Autor: Mikhail Spitsin.  

Comenzamos un ciclo de artículos sobre ensamblador para principiantes, con el objetivo de motivar a las personas a estudiar este lenguaje. En estos artículos hablaremos sobre la estructura de la computadora, gráficos, sonido (48 y 128) y, por supuesto, sobre el propio ensamblador. Así que...

1. PROCESADOR DE LA COMPUTADORA
Tanto un ser humano como cualquier computadora tienen un cerebro; el cerebro de la computadora es el procesador. ¿Y cuál es el "cerebro" de nuestro Speccy? El "cerebro" del Spectrum es el procesador Z80 de la empresa ZILOG. El procesador Z80 es pseudo-dieciseis bits. ¿Cómo entender esto?
La cuestión es que cada procesador puede entender números de una cierta cantidad de bits. Por ejemplo, un número de ocho bits se representa como una combinación de ocho ceros y unos binarios y puede representar cualquier número entero de 0 a 255. Cada bit de dicho número es una potencia de dos, por ejemplo, el número binario 01100110 corresponde al decimal 102, y se puede convertir de decimal a binario así: 2^7*0 + 2^6*1 + 2^5*1 + 2^4*0 + 2^3*0 + 2^2*1 + 2^1*1 + 2^0*0 = 102.
Continuemos. Z80 tiene veintiocho registros de bits (un registro es una celda dentro del procesador donde se pueden almacenar números) y todos los registros se agrupan en pares, cada uno de los cuales se llama así: "par de registros". Así que hemos llegado a la respuesta a nuestra pregunta: 8+8=16, por lo tanto, un par de registros da un número de dieciséis bits. Ahora hablemos de por qué Speccy no es simplemente de dieciséis bits, sino "pseudo" así.
Entonces, los registros son necesarios para realizar operaciones aritméticas sobre ellos, es decir, suma y resta. Desafortunadamente, nuestro pequeño Speccy no sabe dividir ni multiplicar, y ni hablar de acciones más "terribles".
Así que, el procesador puede sumar/restar tanto registros como pares de registros, es decir, realizar operaciones aritméticas sobre números de ocho y dieciséis bits, y dado que los registros solo tienen ocho bits (esto no es IBM), el procesador es "pseudo-dieciseis bits". Aquí está la tabla de todos los registros con su propósito:


╔═══════╦══════════════════════╗
║ Registro║ Propósito principal ║
╠═══════╬══════════════════════╣
║ A ║ 8-vo acumulador ║
║ F ║ Registro de bandera ║
║ B ║ 8-vo contador ║
║ BC ║ 16-vo contador ║
║ DE ║ Registro receptor ║
║ HL ║ 16-vo acumulador ║
║ IX ║ Registro índice ║
║ IY ║ Índice del sistema ║
║ I ║ Vector de interrupción ║
║ R ║ Registro de regeneración║
║ SP ║ Cima de la pila ║
║ PC ║ Contador de comandos ║
╠═══════╩══════════════════════╣
║ Nota: ║
║ 8-vo - ocho bits ║
╚════════════════════════════╝


2. COMANDOS MÁS SIMPLES
Ahora consideremos las operaciones más simples del ensamblador, utilizando como ejemplo BASIC, con el que espero que estés familiarizado. Lo primero que debes hacer para estudiar ensamblador es elegir un "ensamblador-shell" en el que trabajarás. Puedo recomendarte TASM128 si tienes ZX128, o, para ZX48, ZEUS ASSEMBLER.
Así que, empecemos:


BASIC ENSAMBLADOR
10 LET A=1 LD A,1
20 STOP RET


El comando "LET" es equivalente al comando "LD", si lo escribes y lo ejecutas, se almacenará uno en el registro "A". Al ejecutar el comando "RET", se regresará al programa que lo llamó (si el programa fue iniciado desde BASIC, entonces con el comando "RET" regresará el control a BASIC).
Se pueden almacenar números en todos los registros, excepto en "F" y "PC", por ejemplo:


LD A,1 ; 1-->A
LD B,15 ; 15-->B
LD HL,16384 ; 16384-->HL
LD IX,50000 ; 50000-->IX


Pero generalmente al programador no le alcanzan los registros, así que tiene que usar la memoria de la computadora, por ejemplo:


BASIC ENSAMBLADOR
LET A=PEEK 23556 LD A,(23556)


Después de ejecutar este comando, en "A" estará el número almacenado en la celda de memoria especificada, y considerando que en esta celda BASIC almacena el código de la última tecla presionada, este comando tiene sentido práctico.
También se utilizan comandos inversos:


BASIC ENSAMBLADOR
POKE 23607,A LD (23607),A


Pero a menudo es necesario escribir/leer el valor de una celda, cuya dirección se calcula o se toma de una tabla. En ese caso, se utilizan los siguientes comandos:


ESCRITURA LECTURA
LD (BC),A LD A,(BC)
LD (DE),A LD A,(DE)
LD (HL),0 LD E,(HL)


Nota: Quiero señalar que no existe un comando para escribir directamente un número en una celda de memoria, ni para escribir de una celda a otra.
Ahora quiero presentar un programa que imprime cualquier mensaje (es análogo al operador "PRINT"). El programa utiliza el comando "CALL" para llamar a un procedimiento en ROM, este comando se puede comparar con el comando "GO SUB" de BASIC, por ejemplo:


BASIC ENSAMBLADOR
10 GO SUB 999 CALL M1
.... ....
999 LET A=1 M1 LD A,11000 RETURN
RET


Aquí "M1" es una etiqueta, que será reemplazada por la dirección correspondiente al ensamblar el programa.

EJEMPLO DE PROGRAMA
Después del punto y coma en ensamblador, al igual que después de REM en BASIC, se escriben comentarios.


; Programa para imprimir mensajes de texto.
-= PRINT TEXT =-
ORG 30000
ENTSTART LD A,1 ; Abrimos 1
CALL #1601; canal para imprimir.
LD DE,TEXT; Dirección del texto
LD BC,LEN ; Longitud del texto
CALL #203C; Imprimir texto
RET
TEXT DEFB 22 ; Código "AT"
DEFB Y,X ; Posición de impresión
DEFM "¡HOLA, A TODOS!"
LEN EQU 20 ; LEN=20
Y EQU 10 ; Y=10
X EQU 5 ; X=5


Este programa es análogo a la línea de BASIC: 10 PRINT AT 10,5;"¡HOLA, A TODOS!"
En el siguiente número hablaré sobre comandos aritméticos y comandos de comparación, y presentaré un ejemplo de un pequeño juego.
¡Hasta la próxima!

Contenido de la publicación: ZX Format #01

  • IS-DOS
    IskraSoft presenta IS-DOS Classic 4.0 con funciones avanzadas de edición de texto, una utilidad de disco, un controlador de disco duro para ZX Spectrum y un depurador de programas.
  • IS-DOS - Владимир Елисеев
    Descripción general de IS-DOS para ZX Spectrum, destacando sus ventajas sobre TR-DOS. Discusión sobre la instalación, uso y gestión de archivos en IS-DOS. Introducción a utilidades del sistema e interfaz similar a Norton Commander.
  • IS-DOS - Владимир Елисеев
    El artículo ofrece una guía concisa del disco del sistema IS-DOS, enumerando todos los archivos esenciales con explicaciones. Los archivos están ordenados alfabéticamente y agrupados por directorios para una fácil navegación. La guía se centra en una visión general básica de archivos y comandos sin descripciones extensas.
  • IS-DOS - Владимир Елисеев
    Discusión sobre el estándar UniColor para configuraciones de color en programas IS-DOS, su implementación y ventajas para la personalización del usuario.
  • IS-DOS - Владимир Елисеев
    Discusión de las características de la interfaz de ventanas de IS-DOS. Implementación del sistema de ventanas en IS-DOS y sus ventajas. Ejemplos de programas para crear ventanas y marcos.
  • IS-DOS - Владимир Елисеев
    Descripción del funcionamiento interno del programa gmen.com para IS-DOS, centrándose en la gestión de dispositivos y el manejo de menús con código fuente detallado y comentarios.
  • Hardware - Vladimir Larkov
    Discusión sobre la modificación del hardware Scorpion ZS-256 para compatibilidad con software específico. Describe el bloqueo del puerto #1FFD para ejecutar programas incompatibles. Ofrece detalles técnicos para la implementación.
  • Железо - Nemo
    Discusión sobre dispositivos de frenado para ZX Spectrum. Enfoque en la creación e impacto de frenos en procesadores acelerados. Advertencia sobre posibles efectos secundarios.
  • Железо
    Discusión sobre la impracticidad de reparar computadoras viejas y la sensatez económica de reemplazarlas por hardware moderno. El artículo destaca los desafíos en las reparaciones caseras y sugiere soluciones alternativas. Enfatiza los beneficios de actualizar a componentes más nuevos y confiables.
  • Железо
    Discusión sobre nuevos desarrollos periféricos para Scorpion ZS 256, incluyendo un innovador controlador universal e interfaz MIDI. Destaca mejoras en controladores de teclado y ratón y expansión de capacidades de software incorporadas. Ofrece detalles sobre la extensión ROM profesional y el modo turbo para un mejor rendimiento.
  • Игрушки - Ruster
    Un recorrido detallado del juego Crystal Kingdom Dizzy, incluidas soluciones a rompecabezas y consejos para avanzar en la historia.
  • Игрушки - Павел Рындин
    Descripción del juego de lógica 'Toros y Vacas', su mecánica y jugabilidad. Explica niveles de dificultad y el objetivo de adivinar un número con intentos mínimos.
  • Игрушки - Вячеслав Медноногов
    Discusión sobre los matices del juego 'UFO: Enemy Unknown', centrándose en las especies alienígenas, sus tácticas y estrategias de juego. Detalles sobre la mecánica del juego y la futura secuela 'UFO-2: Devils of the Abyss'. Incluye ideas de programación e historia de desarrollo.
  • Игрушки - SParker
    Visión general de juegos y software en el mercado de San Petersburgo en 1995.
  • Интервью
    Vyacheslav Mednonogov comparte su viaje como programador, desde ensamblar su primer Spectrum-48 hasta desarrollar juegos destacados como 'UFO. Enemy Unknown'. Describe los desafíos e ideas en el desarrollo de juegos y el auge de la localización de juegos rusos. Sus experiencias destacan la evolución de la programación y la distribución de software en los años 90.
  • Информация
    Introducción a ZX-Format, una nueva revista electrónica para entusiastas del ZX Spectrum, centrada en juegos, programación, hardware e interacción comunitaria.
  • Конкурс
    Discusión sobre la organización de un nuevo concurso para la revista. Se invita a los lectores a enviar sus ideas de temas. Los temas seleccionados se presentarán en futuros números.
  • Конкурс
    ZX Format anuncia un concurso para la mejor misión creada con el editor de misiones para el juego Laser Squad. Se aceptan envíos por correo o en persona. El ganador recibe una caja de discos 3M y el próximo número gratis.
  • Отдохнём - Килат Амор
    Un día de un programador lleno de sueños, juegos y charlas casuales. Vasetchkin equilibra ambición con relajación, encarnando el espíritu del programador. Reflexiona sobre las demandas y el disfrute de la vida de un programador.
  • Buzón de correos - RML
    Discusión sobre ofertas de hardware y software en San Petersburgo por LOGROS y Create Soft, incluyendo detalles sobre la interfaz Kempston Mouse.
  • Buzón - SParker
    Compilación de códigos de trucos para juegos de ZX Spectrum por Sergey Pavlov. Técnicas para vidas extra e inmortalidad. No recomendado para los amantes del juego limpio.
  • Buzón
    Descripción de las directrices de envío para cartas y artículos a la revista, incluyendo formato y preferencias de envío.
  • Премьера - Алексей Щекин
    Jugabilidad del juego Lines en ZX Spectrum, similar a Color Lines. Mueva las bolas para formar líneas del mismo color. Se describen la puntuación y los controles.
  • Программистам - Дмитрий Рудовский
    Introducción a técnicas avanzadas de programación en BASIC para ZX Spectrum 48, destacando sus ventajas sobre el BASIC 128. Planes para futuros artículos incluyen programas de servicio y extensiones de lenguaje. El artículo sirve como guía para programadores con experiencia.
  • Программистам - Михаил Спицын
    Introducción al lenguaje ensamblador en ZX Spectrum. Explicación de la estructura del procesador Z80, registros y comandos básicos. Incluye ejemplos de programas para aprender.
  • Программистам - Андрей Седов
    Editor de misiones para Laser Squad de Andrey Sedov permite a los fans crear nuevas misiones. Incluye interfaz amigable con controles mínimos. Ofrece funciones como edición de objetos, ajustes de precios y asignación de sprites.
  • Varios
    Historia del desarrollo de la computadora Amiga, sus creadores y características clave. Evolución de los juegos arcade a una computadora doméstica líder. Éxito en el mercado y avances tecnológicos de Amiga.
  • Разное
    Revisión de próximos productos de software para ZX Spectrum con demos. Destacan juegos de aventura, pruebas de RPG y tácticas estratégicas. Varios desarrolladores conocidos contribuyen a estos lanzamientos.