Verständnis cmp-Anweisung

Ich bin sehr neu auf Montage und jetzt versuche ich, zu verstehen, wie cmp funktioniert. Hier ist, was geschrieben steht wiki:

cmp arg2, arg1

Führt eine Vergleichs-operation von arg1 und arg2. Der Vergleich
erfolgt durch eine (signierte) Subtraktion von arg2 arg1, die Ergebnisse
davon können aufgerufen werden, Temp. Temp wird dann verworfen.

Was bedeutet es "Temp wird dann verworfen"? Wo ist es gespeichert? Wie kann ich das Ergebnis des Vergleichs? Kann sich das jemand erklären?

  • Cos AFAIK es wird oft mit je. Aber je kennen muss, wenn die Bedingung wahr ist oder falsch.
  • Beachten Sie, dass Sie ' re unter Bezugnahme auf wikibooks, die ist eine Besondere Sammlung von wikis. Ein wiki ist nur eine Art von website, die Benutzer Bearbeiten können. Und als solche, wikibooks ist definitiv nicht die prime Quelle für x86 assembly Definitionen (dieses ist ein gutes Beispiel, warum es manchmal besser, sich auf Experten-Dokumentation als user-generated-Dokumentation). Verwenden Sie google, um zu finden eine andere Quelle, und interpretieren!
  • je braucht nicht zu wissen, wenn Bedingung wahr ist oder falsch, je ist alias jz, und jz ist der "Sprung, wenn zero-flag gesetzt ist". Also, was auch immer Letzte Anweisung, die hat ändern die ZF, dass man vorhersagt, ob die nächste je nehmen einen Sprung (ZF=1) oder nicht (ZF=0). Eine der witzigen Folgen der neuen asm-Programmierer nicht verstanden haben, ist, code zu schreiben, wie sub ax,1 cmp ax,0 jne myLoop ... dass cmp ist nicht erforderlich, da, wie frühere sub wird bereits festgelegt, die ZF in ausreichender Weise für das jne Arbeit (aber logischer wäre, die Nutzung jnz myLoop alias, d.h. liest sich wie "jump not zero-loop" - fast Englisch.
InformationsquelleAutor St.Antario | 2017-08-26
Schreibe einen Kommentar