Dudas chorra de ensamblador

Programando el Amstrad en Ensamblador.
Reglas del Foro
Debido a que hay varios temas pidiendo ayuda para programar en ensamblador máquinas distintas al Amstrad CPC, con micro distinto al Z80 y que incluso dependen del sistema operativo, nos vemos en la necesidad de poner por escrito que estos posts son bienvenidos pero que no es el lugar adecuado ya que por estos lares nos dedicamos más al ensamblador del Z80, un microprocesador de 8 bits que tuvo su gran auge en ordenadores y consolas de los años 80.

De todas formas, esto no quita que alguien que sepa del asunto pueda postear alguna respuesta pero es más fácil encontrar foros dedicados a programar en ensamblador en Windows o MS-DOS que ayudarán más que nosotros:
http://www.lawebdelprogramador.com/news ... nsamblador
Avatar de Usuario
Brundij
Forero habitual
Forero habitual
Mensajes: 221
Registrado: Mié 29 Abr , 2020 6:23 pm

Dudas chorra de ensamblador

Mensajepor Brundij » Sab 02 May , 2020 1:30 am

Desde que hago las recopilaciones de pantallas viewtopic.php?f=3&p=78566#p78566 con el cargador de Topo, a veces surgen errores por causas que un lego como yo en estas lides no tiene en cuenta. Como tampoco quiero abrasar a Trocoloco con mensajes privados pues he pensado que las puedo dejar aquí y si alguien tiene a bien responderlas pues miel sobre hojuelas.

Duda 1:
Como no sé programar uso un ASM como plantilla en el que voy cambiando o añadiendo lo que convenga en cada caso. Aquí en concreto lo que está en naranja es lo que he de cambiar para nombrar la pantalla y la paleta:
titulo0:
ld hl,titulo0_paleta
call set_palette
ld hl,cambia_tam_normal
call cambia_tam_pantalla
call borra_pantalla
call modo_1
call inicia_carga
ret

En los dos últmos CDT tuve problemas con los nombres que les puse a dos pantallas: 1001bc y 3dsnook, que acabe cambiando por miluno y snook. El bc lo acabé quitando también porque sospecho que es una instrucción en ensamblador. La duda es: ¿Todo lo susceptible de ser un número binario o hexadecimal va a dar problemas? Ya use números en otros nombres pero no dió errores.

Duda 2:
A la hora de definir la paleta la he de definir en números hardware: &54,&4B,&4A...
¿El ampersand es obligatorio? Porque en una ocasión borré uno sin querer pero no hubo ningún problema.
¿Cuando un color hardware es un número con letra, ha de ser en mayúscula forzosamente?

Avatar de Usuario
a13x15
Lechoncillo
Lechoncillo
Mensajes: 15
Registrado: Mié 23 Ago , 2017 6:19 pm
Ubicación: the matrix

Re: Dudas chorra de ensamblador

Mensajepor a13x15 » Sab 02 May , 2020 2:29 am

No soy un experto, de echo estoy aprendiendo ensamblador del Z80 aprovechando el confinamiento. Espero no confundirte con una respuesta incorrecta.
En los dos últmos CDT tuve problemas con los nombres que les puse a dos pantallas: 1001bc y 3dsnook, que acabe cambiando por miluno y snook. El bc lo acabé quitando también porque sospecho que es una instrucción en ensamblador. La duda es: ¿Todo lo susceptible de ser un número binario o hexadecimal va a dar problemas? Ya use números en otros nombres pero no dió errores.
Las reglas concretas dependerán del ensamblador que utilices. Lo habitual es que las etiquetas empiecen por una letra o subrayado y luego pueden seguir letras, subrayados y dígitos. Dependiendo del ensamblador pueden contener otros caracteres y también pueden definir límites para la longitud de las etiquetas.

Prueba prefijando 1001bc y 3dsnook con un subrayado o una letra (_1001bc o a101bc).
El bc lo acabé quitando también porque sospecho que es una instrucción en ensamblador.
BC es el nombre de un registro del Z80 pero no debería dar problemas si forma parte de una etiqueta o identificador. En el caso de 1001bc diría que el problema es el que he comentado antes. _1001bc posiblemente funcione.
Duda 2:
A la hora de definir la paleta la he de definir en números hardware: &54,&4B,&4A...
¿El ampersand es obligatorio? Porque en una ocasión borré uno sin querer pero no hubo ningún problema.
El ampersand indica al ensamblador que es un valor hexadecimal. Si quitas el ampersand lo interpretará como un número decimal, cambiando su valor (no es lo mismo &10 que 10) o dando un error (si contiene letras y no es un número decimal válido).

Puedes eliminar el ampersand substituyendo el valor hexadecimal por su equivalente decimal (&10 por 16).

También es posible que el ensamblador te permita definir la base utilizada por defecto para lo literales numéricos, en cuyo caso el & podría eliminarse si indicas que vas a utilizar base 16.
Duda 2:
¿Cuando un color hardware es un número con letra, ha de ser en mayúscula forzosamente?
Dependerá del ensamblador, sdasz80, que es el que utilizo, no diferencia entre mayúsculas y minúsculas en los números hexadecimales.

Avatar de Usuario
Brundij
Forero habitual
Forero habitual
Mensajes: 221
Registrado: Mié 29 Abr , 2020 6:23 pm

Re: Dudas chorra de ensamblador

Mensajepor Brundij » Sab 02 May , 2020 2:50 am

Uso el ensamblador del Winape:
pues si, con subrayado deja de dar errores. Lo tendré en cuenta para la próxima.
Y parece que no da problemas con las minúsculas tampoco.
Gracias

Avatar de Usuario
MoteroV4
Forero habitual
Forero habitual
Mensajes: 106
Registrado: Jue 02 May , 2019 9:26 pm

Re: Dudas chorra de ensamblador

Mensajepor MoteroV4 » Mar 26 May , 2020 3:18 pm

Uso el ensamblador del Winape:
pues si, con subrayado deja de dar errores. Lo tendré en cuenta para la próxima.
Y parece que no da problemas con las minúsculas tampoco.
Gracias
En la ayuda de Winape, en "The Integrated Assembler->Assembler Syntax" profundizan más sobre las etiquetas y valores numéricos. De todas formas también te puedes descargar algún manual de Maxam 1.5 como referencia.


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic