1

Bonjour tout le monde happy ,

Je suis nouveau sur ce forum mais ça fait quelques temps (3 ans en fait) que je programme en TI-Basic et je me lance dans l'asm z80 pour MirageOs.
Mais j'ai un petit problème, donc petite question qu'on a dû vous poser des 10aines de fois:
Est-il possible de modifier une valeur qui est stocké à une adresse?
petit exemple :

positions:
.db 0,0,0,0,0,0,0,0,0,0,0,0

Je sais qu'on peut lire la 6° position par exemple, mais est-ce qu'on peut la modifier?

Sinon j'avais pensé à autre chose pour faire pareil mais c'est un peu tordu:

#define positions saferam1

d'après ce que j'ai compris, si on ne définit pas d'étiquette après, positions est une adresse qui peut contenir 768 octets (taille de saferam1).
Si je veux modifier les 16 premiers bits, si j'ai bien compris, je fais:

ld hl,(positions)

et ensuite je mets des trucs comme inc, dec, add, sla, sra... pour hl. Mais si je veux modifier la valeur de l'adresse de positions + a, comment faire?

C'est crispant mur , je pourrais faire plein de trucs en asm si je savais comment faire ça.
Si vous pouvez répondre à ces questions ou si vous avez une manière détournée de faire la même chose, merci d'avance.

PS: Bravo pour Paper Plane, pacHa (et Deus Makina) top ! Je trouve ça marrant qu'un jeu au principe si simple soit si génial (ça me rappelle un peu yétisports, ce genre de petit jeu sympa).

2

bon tu peux faire comme ceci..

ld hl,positions
ld a,(hl)
inc a
ld (hl),a
inc hl ; positions +1
ld (hl),5
inc hl ; positions +2
inc (hl)


ou encore...

ld ix,positions
ld a,(ix+0)
inc a
ld (ix+0),a
ld (ix+1),5
inc (ix+2)


le deuxieme est plus coutant en cycles et en octets...donc la première est mieux, bon ca dépend du contexte

3

Merci beaucoup! oui ça va me servir...