Différence entre JA et JG en assemblée
Pouvez-vous me dire la différence entre SAUT SI au-DESSUS de ET SAUT SI PLUS en langage d'Assemblage? quand dois-je utiliser chacun d'entre eux? - ils me donner des résultats différents?
Ci-dessus (
ja
) est non signé, Plus (jg
) est signé. Voir Compréhension vs les conditions de Dépassement/flags pour la signature de vs unsigned pour en savoir plus sur comment exactement ils se mettre en cmp
, sub
, add
, ou d'autres instructions. Voir aussi jcc
dans le jeu d'instruction de référence. D'autres liens dans la x86 balise wiki.OriginalL'auteur user3157687 | 2014-01-03
Vous devez vous connecter pour publier un commentaire.
Comme Intel manuel explique, JG interprète les drapeaux comme si la comparaison a été signé, et le JUGE interprète les drapeaux comme si la comparaison n'était pas signé (bien sûr, si l'opération de définir les indicateurs n'était pas une comparaison ou une soustraction, qui ne peut faire sens). Donc oui, ils sont différents. Pour être précis,
ja
sauts si CF = 0 et ZF = 0jg
sauts si ZF = 0 et SF = DEPar exemple,
>u
et>s
d'accord pour les valeurs avec le haut de bits à zéro, mais les valeurs avec le haut sont considérés comme négatifs par>s
, la plus grande et par>u
(bien sûr, si les deux opérandes ont la haut ensemble de bits,>u
et>s
accepter à nouveau).il n'y a aucun signe. Il y a seulement la condition des drapeaux.
ja
ignore le signe du drapeau (SF). Exemple entrants..désolé, mais que voulez-vous dire par u, s ?:)
non signé et signé
Alors, si je dis par exemple CMP 5, -6 JA quelque part. il ne sera pas sauter à droite? parce que les 6>5 ?
OriginalL'auteur harold