
c'est fondamental
les variables non-pointeurs sont LA extension du C à l'asm en fournissant un moyen symbolique d'accéder au contenu de la mémoire.
<optionnel>d'ailleurs si tu regardes pour faire l'opération mem[adresse] en asm, on écrit mov qc, a pas mov qc,(a). En réalité il va stocker dans la RAM à l'adresse a, mais on associe "a" et "le contenu de a" donc c'est pareil

</optionnel>
Je réalise que ce qui fout le bordel dans ta compréhension c'est les registres indirects
quand tu fais mov qc, %a0 tu stockes dans LE REGISTRE %a0 mais quand tu fais (%a0) tu stockes en fait dans mem[%a0] et ça n'a aucun équivalent en C puisqu'on ne manipule que la mémoire. Ca fait un fouillis memoire/registre à cause du jeu d'instruction CISC.
En RISC (arm, mips, ppc) on n'a pas le droit de faire des opérations qui mélangent la mémoire et les registres. Toutes les instructions (mov, add, etc) ne travaillent qu'avec des registres directement. Et il y a deux instructions spéciales LOAD ( mem[reg1]->reg2, avec des options, index, etc) et STORE (qui fait l'inverse)
C'est beaucoup plus clair. en fait le move 68k est un mélange de move(regs) et de load/store