deeph (./9) :
'.db' signifie 'define byte' si je me trompe pas, en gros c'est comme si tu crée une variable (ou plutot une liste) et que tu y mets tout ce que tu veux.
C'est plus terre-à-terre que ça. Quand on écrit un programme assembleur, on écrit directement quels sont les octets qui vont constituer le programme. Par exemple quand on écrit :
ld a,$23
inc a
le programme binaire final contiendra "3E423C" ("3E42" pour "ld a,42" et "3C" pour "inc a").
Quand tu écris ".db $42", ça fait que ton programme contient effectivement "42". Et rien ne t'empêche, à l'exécution du programme, d'aller changer les valeurs n'importe où , y compris dans ton propre code "ld a,23 \ inc a".
Donc....
arnauddebordeaux (./13) :
En gros, c'est un peu comme les listes en basic, sauf que les valeurs (fixées au début)ne peuvent pas changer?
Non. Tu peux considérer ça comme une liste, mais il faut garder à l'esprit que c'est endroit de la mémoire comme les autres qui n'a aucun privilège.
La "liste" de deeph peut être modifiée, par exemple avec ce code:
ld a,$42
ld (Table_Machin),a
ld a,$64
ld (Table_Machin+1),a
Au passage, "Table_machin" n'est qu'une valeur connue par le compilateur, calculée à partir de l'emplacement du label "Table_machin" dans le code source, et l'adresse de départ du programme (indiquée par .org xxxx (xxxx dépend de la calculette)).
J'insiste sur le fait que ce qu'on manipule en assembleur, ce n'est plus des "variables" ou des "listes" comme en BASIC, mais on manipule juste de la mémoire, sans règle quelconque pour vous empêcher d'écrire n'importe où ou de faire planter la calculette. Évidemment, quand on écrit:
coordonnee_x .db 0
coordonnee_y .db 0
et qu'on stocke dans ces deux octets ce qu'il faut pour faire tourner un jeu, on dit que c'est des variables. Mais si on essaye de comprendre l'assembleur en restant collé à la comparaison avec le BASIC, on passe à coté des nouveaux dangers et des nouvelles possibilités de ce "langage".