sjasmplus raro raro

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
Avatar de Usuario
Rinconete
Jack The Nipper
Mensajes: 193
Registrado: Mar Oct 09, 2007 7:32 pm
Ubicación: Valladolid

sjasmplus raro raro

Mensaje por Rinconete » Vie Nov 02, 2007 11:34 pm

Intento ensamblar el siguiente código con sjasmplus:

DEVICE ZXSPECTRUM48

ORG 32768

COMIENZO

AND A,#C0
RET


savesna "prueba.sna",COMIENZO

Una vez ensamblado cuando desensamblo la imagen prueba.sna en spectaculator o en emuzwin obtengo un byte más:

AND A
AND A,#C0
RET

he comprobado que siempre que pongo AND A,valor introduce un AND A delante. ¿Tiene una explicación razonable? ¿le ha pasado a alguien? ¿cómo se evita?. Gracias

Bubu
Freddy Hardest
Mensajes: 544
Registrado: Mié Oct 31, 2007 12:15 am

Mensaje por Bubu » Sab Nov 03, 2007 12:57 am

¿Y si usas OR también te pasa lo mismo?
¿Y si en lugar de AND A,#C0 usas AND #C0?

Avatar de Usuario
mcleod_ideafix
Johnny Jones
Mensajes: 3985
Registrado: Vie Sep 21, 2007 1:26 am
Ubicación: Jerez de la Frontera
Contactar:

Mensaje por mcleod_ideafix » Sab Nov 03, 2007 1:21 am

Imagino que AND A,#C0 es una licencia que se permite el ensamblador, no? Porque nmemotécnico, tal cual, no existe en Z80: es AND #C0
¿Es posible que el generador de código se lie por eso? Prueba lo que ha dicho Bubu, que es el nmemotécnico correcto...
Web: ZX Projects | Twitter: @zxprojects

Gandulf
Nonamed
Mensajes: 1067
Registrado: Lun May 07, 2007 10:06 pm

Mensaje por Gandulf » Sab Nov 03, 2007 2:15 am

Tiene pinta de ser una "funcionalidad" del ensamblador, para meter ands encadenados.

Imagino que and a, #C0, #01 producirá

and a
and #C0
and #01

En un ensamblador normal and a, #C0 te daría un error, como bien te dicen el resto de compañeros.

EDITADO: Acabo de ver que me acabo de convertir en "Minero loco" :lol: :lol:
Un saludo,

Gandulf

Avatar de Usuario
Rinconete
Jack The Nipper
Mensajes: 193
Registrado: Mar Oct 09, 2007 7:32 pm
Ubicación: Valladolid

Mensaje por Rinconete » Sab Nov 03, 2007 8:40 am

Exactamente, acabo de comprobarlo y es eso lo que pasa. He revisado la documentación del ensamblador y, en efecto, permite instrucciones encadenadas, por lo que interpreta que se trata de dos instrucciones: AND A y AND #C0.

Lo curioso es que esto me ha ocurrido utilizado el depurador de Emuzwin. Permite generar el código ensamblador de un bloque de memoria. Ha sido al ensamblarlo con Sjasmplus cuando he visto que había "más código" que en el programa original. Se ve que es un bug.

Hay también otros fallos en Emuzwin, por ejemplo, al generar un bloque con una instrucción RST #10 he visto que aparecía como RST 2, por lo que parece que se ha liado con la base.

Muchas gracias a todos!

Gandulf
Nonamed
Mensajes: 1067
Registrado: Lun May 07, 2007 10:06 pm

Mensaje por Gandulf » Sab Nov 03, 2007 9:59 am

Yo para depurar uso spectaculator. No es perfecto y podría ser más cómodo, pero de los que he visto es el que más me gusta, y desde luego el menos "buggy" :wink:
Un saludo,

Gandulf

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Ahrefs [Bot], Google [Bot], Majestic-12 [Bot] y 22 invitados