Programmation Assembleur/x86/Copie entre registres et mémoire
Aller à la navigation
Aller à la recherche
Programmation Assembleur x86 |
Modifier ce modèle |
Move[modifier | modifier le wikicode]
L'instruction la plus courante est MOV (abréviation de l'anglais move : déplacer) qui permet de transférer le contenu d'un emplacement mémoire vers un registre et inversement, ou entre deux registres de même taille.
Le nombre de bits transféré est défini par la taille du registre source ou cible du transfert. Les assembleurs peuvent employer des suffixes pour le nom de l'instruction indiquant ce nombre d'octets :
- movb (Move Byte) : 8 bits
- movw (Move Word) : 16 bits
- movl (Move Long) : 32 bits
Exemple :
.data
valeur:
.long 2
.text
.global _start
_start:
movl $6, %eax
# %eax = 6
movw %ax, valeur
# valeur = 6
movl $0, %ebx
# %ebx = 0
movb %al, %bl
# %ebx = 6
movl valeur, %ebx
# %ebx = 6
movl $valeur, %esi
# %esi = l’address de valeur
xorl %ebx, %ebx
# %ebx = 0
movw valeur(, %ebx, 1), %bx
# %ebx = 6
# Linux sys_exit
mov $1, %eax
xorl %ebx, %ebx
int $0x80