Intel x86 Assembly Language & Microarchitecture
Manipulation de données
Recherche…
Syntaxe
- .386 : demande à MASM de compiler pour une version de puce x86 minimum de 386.
- .model : définit le modèle de mémoire à utiliser, voir .MODEL .
- .code : segment de code utilisé pour des processus tels que le processus principal.
- proc : déclare le processus.
- ret : utilisé pour sortir des fonctions avec succès, voir Travailler avec des valeurs de retour .
- endp : termine la déclaration de processus.
- public : met les processus à la disposition de tous les segments du programme.
- end : termine le programme ou, s'il est utilisé avec un processus, tel que " end main ", fait du processus la méthode principale.
- call : Appelle le processus et envoie son opcode sur la pile, voir Contrôle de flux .
- ecx : Contre-registre, voir registres .
- ecx : Contre registre.
- mul : multiplie la valeur par eax
Remarques
mov est utilisé pour transférer des données entre les registres .
Utiliser MOV pour manipuler les valeurs
La description:
mov copie les valeurs des bits de l'argument source vers l'argument de destination.
Les sources / destinations communes sont les registres , généralement le moyen le plus rapide de manipuler les valeurs avec [in] CPU.
Un autre groupe important de valeurs source_of / destination_for est la mémoire de l'ordinateur.
Enfin, certaines valeurs immédiates peuvent faire partie du codage des instructions mov lui-même, ce qui permet de gagner du temps lors de l'accès à la mémoire en lisant la valeur avec l'instruction.
Sur les processeurs x86 en mode 32 et 64 bits, il existe de nombreuses possibilités de les combiner, en particulier les différents modes d’adressage de la mémoire. En général, la copie mémoire-mémoire est hors limite (à l'exception des instructions spécialisées comme MOVSB ), et une telle manipulation nécessite un stockage intermédiaire des valeurs dans le registre [s] en premier.
Étape 1: Configurez votre projet pour qu'il utilise MASM , voir Exécution d'un assembly x86 dans Visual Studio 2015
Étape 2: Tapez ceci:
.386
.model small
.code
public main
main proc
mov ecx, 16 ; Move immediate value 16 into ecx
mov eax, ecx ; Copy value of ecx into eax
ret ; return back to caller
; function return value is in eax (16)
main endp
end main
Étape 3: Compiler et déboguer.
Le programme doit retourner la valeur 16 .