GIF-1001
Cours 9, p.2
Énoncés conditionnels et sauts, principe
• L’instruction JMP Address permet de mettre IP à la valeur désignée par
Address. JMP permet un saut à l’intérieur du code segment.
• Comme les adresses des instructions sont difficiles à retenir et qu’elles
peuvent changer lorsque le programme change, des labels ont été inventés.
Un label est une étiquette remplaçant l’adresse d’une instruction.
• L’instruction JMP exécute un saut inconditionnel.
• Les instructions JZ, JC, JS exécutent des sauts conditionnels. Elles
changeront la valeur de IP si les drapeaux ont la valeur appropriée. Si les
drapeaux n’ont pas la bonne valeur, l’instruction est ignorée et la prochaine
instruction est exécutée. Par exemple, JZ MonLabel sautera à l’instruction
indiquée par MonLabel si le drapeau Zéro est à 1.
• L’instruction CMP A,B a le même effet qu’une soustraction sur les drapeaux,
mais elle ne change pas la valeur de A. Cette instruction est utile pour créer
des énoncés conditionnels du genre if(A != B). if(A != B) se traduirait par
CMP A,B, suivi de JNZ CodeAExecuterSiVrai.
• La plupart des instructions de saut n’utilisent qu’un drapeau. Cependant,
certaines comparaisons (<,>) requièrent des tests sur deux drapeaux (Zéro
et (Overflow OU Carry)).
• Les drapeaux utilisés pour évaluer une condition peuvent être différents si
les nombres comparés sont signés ou non-signés. Voir JG, JLE, JA…