Befehl CMP



  • Hi,

    ich habe in einer Dokumentation zum Befehl CMP eine Übersicht gesehen, die die Werte der Flags enthält.

    größer ZF = 1
    kleiner CF = 1

    Beim Vergleich größer steht ZF = 0 und SF = OF. Was bedeutet SF = OF?



  • ich meinte: gleich ZF = 1 (Tippfehler)



  • SF = OF bedeutet Sign Flag und Overflow Flag haben denselben Wert.

    Was ist das eigentlich für eine «Dokumentation»? Das kommt mir alles recht spanisch vor ...

    1. Was hat das bei CMP zu suchen? CMP arbeitet wie eine Subtraktion, die das Ergebnis (bis auf die Flags) verwirft. Daraus leiten sich die Flags im Ergebnis ab. Die Interpretation des Ergebnisses gehört zu den bedingten Sprung-Befehlen, JE JB JGE und Konsorten ...
    2. Bei zwei gleichen Operanden ist das Ergebnis der Subtraktion 0, also wird ZF gesetzt. ZF=1 steht also für Gleichheit, nicht, wie du auflistest, für größer.
    3. Die Begriffe größer/kleiner sind bedeutungslos, wenn man nicht dazusagt, ob die Operanden vorzeichenbehaftet sind oder nicht. Wenn man bspw. 0 und FFFF (16 bit) vergleicht ... interpretiere ich es vorzeichenbehaftet bekomme ich 0 > -1, interpretiere ich es dagegen vorzeichenlos bekomme ich 0 < 65535. Deshalb gibt es unterschiedliche Sprungbefehle ... JA vs. JG beispielsweise.

Anmelden zum Antworten