Buenas. Lo que creo que estás haciendo mal es que estás accediendo a ROM y
por tanto tu variable es de sólo lectura. Tu dirección de memoria es la
41000, lo que significa que en hexadecimal es la a028 y esto está en la
página 2 (de 8000h a bfffh). Tienes que usar variables de la página 3 (de
c000h a ffffh) que es donde está alojada la RAM. Un saludo.
Dani
-----Mensaje original-----
De: the_goulin [mailto:msx(_en_)cpmspain(_punto_)com]
Enviado el: lunes, 11 de abril de 2005 16:08
Para: hispamsx(_en_)yahoogroups(_punto_)com
Asunto: [hispamsx] RE: ayuda con z88dk & assembler
Bueno, ahora ya empiezo a pensar que estoy DESaprendiendo o_O!
hace tiempo que estoy desconectado del temilla, pero este codigo no deberia
funcionar y modificar la direccion 41000?
.ORG 40000
.BASIC
ld hl,41000
ld (hl),234
ret
lo he compilado con el asMSX y lo he probado con el blueMSX (el codigo en C
tambien esta probado con el blueMSX)
Saludillos y gracias
--- En hispamsx(_en_)yahoogroups(_punto_)com, "the_goulin" <msx@c...> escribió:
Hola
tengo un problemilla con el z88dk y un minicodigo en assembler.
la cuestion es que quiero cambiar el valor de una direccion de memoria
y no hay manera.
alguien me sabe decir donde tengo el fallo?
#include <stdio.h>
unsigned int val16;
unsigned char val8;
void poke(unsigned int direccion,unsigned char valor);
void peek(unsigned int direccion);
main()
{
poke(41000,100);
printf("--------\n");
}
void poke(unsigned int direccion,unsigned char valor)
{
val16=direccion;
val8=valor;
#asm
ld hl,_val16
ld a,_val8
ld (hl),a
#endasm
}
luego desde el basic hago print peek(41000) y no obtengo el 100
¿?¿?¿?¿?¿
alguien puede ayudarme please.
Saludillos
*HispaMSX. La mailing-list de MSX en castellano*
Para cualquier duda: hispamsx-owner(_en_)yahoogroups(_punto_)com
Web de lista: http://www.hispamsx.org
Enlaces a Yahoo! Grupos
hispamsx-unsubscribe(_en_)yahoogroups(_punto_)com
http://es.docs.yahoo.com/info/utos.html