Verschil tussen JA en JG in montage

Kun je me alsjeblieft het verschil vertellen tussen JUMP IF BOVENEN JUMP IF GROTERin assembler? wanneer gebruik ik ze allemaal? geven ze me andere resultaten?


Antwoord 1, autoriteit 100%

Zoals Intel’s handleiding uitlegt, interpreteert JG de vlaggen alsof de vergelijking is ondertekend, en JA interpreteert de vlaggen alsof de vergelijking niet ondertekend was (natuurlijk als de bewerking die de vlaggen instelde geen vergelijking of aftrekking was, is dat misschien niet logisch). Dus ja, ze zijn anders. Om precies te zijn,

  • JAspringt als CF = 0en ZF = 0(ongetekend Boven: geen carry en niet gelijk)
  • JGspringt als SF = OFen ZF = 0(ondertekend Groter, exclusief gelijk)

Bijvoorbeeld

cmp eax, edx
ja somewhere ; will go "somewhere" if eax >u edx
             ; where >u is "unsigned greater than"
cmp eax, edx
jg somewhere ; will go "somewhere" if eax >s edx
             ; where >s is "signed greater than"

>uen >szijn het eens over waarden met de bovenste bit nul, maar waarden met de bovenste bit worden als negatief behandeld door >sen as big by >u(natuurlijk als beide operanden de bovenste bit hebben, >uen >snogmaals mee eens).


Antwoord 2, autoriteit 2%

JAwordt gebruikt om te springen als de laatste instructie voor het wijzigen van de vlag op niet-ondertekende nummers stond. maar aan de andere kant wordt JGgebruikt om te springen als de laatste “vlag wijzigen” instructie op getekende nummers was.

Other episodes