Programmation Assembleur/x86/Les branchements
Programmation Assembleur/x86 |
Modifier ce modèle |
Par défaut, les instructions sont exécutées les unes à la suite des autres, en séquence.
Les instructions de branchement ou de saut permettent de passer à une autre instruction que la suivante, pour diverses raisons :
- Effectuer une boucle, dans ce cas, le saut revient à une instruction antérieure,
- Sauter les instructions conditionnelles quand la condition est fausse,
- Appeler un sous-programme.
Saut inconditionnel
Le saut réalisé par l'instruction JMP
est effectué sans test de condition. Le seul paramètre de cette instruction est l'adresse où l'exécution doit se poursuivre. Cette adresse peut être une constante, ou contenue dans un emplacement mémoire (un pointeur).
JMP adresse
Exemples :
JMP 20E5
JMP [BX]
Saut conditionnel
Les instructions de saut conditionnel n'effectue le saut que si la condition correspondante est réalisée. Comme pour l'instruction JMP
, le seul paramètre est une adresse. Toutefois, sur les anciens processeurs, l'adresse ne peut aller au delà de 128 octets en arrière ou 127 octets en avant, car l'adresse n'est codée que sur un octet signé. Dans ce cas, l'astuce est de sauter à une instruction JMP
qui utilise une adresse codée sur plus d'octets.
La table ci-dessous résume ces instructions :
Instruction et synonymes | Signification (en anglais) | Condition nécessaire |
---|---|---|
JCXZ | Jump if CX is Zero | Registre CX égal à 0 |
JZ
JE |
Jump if Zero flag is set
Jump if both operand were Equals |
Indicateur Zéro à 1
ou quand les deux opérandes A et B sont égaux (A-B = 0) |
JNZ
JNE |
Jump if No Zero flag set
Jump if both operand were Not Equals |
Indicateur Zéro à 0
ou quand les deux opérandes A et B ne sont pas égaux (A-B != 0) |