Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#3

AW: (F)ASM: Flag zustand in register speichern?

  Alt 15. Mär 2012, 23:47
Es gibt Instructions, um Register in Abhängigkeit von Flags zu setzen: Z.B. setc <byte-register> für das Carry-Flag und setz <byte-register> für das Zero-Flag. Siehe auch diese Antwort bei StackOverflow mit Delphi-Beispiel.

Deinen Code würde ich damit so schreiben:
Delphi-Quellcode:
// edx = vergleichsdaten 1
// ebx = vergleichsdaten 2
// eax = ge-and-etes vergleichsergebnis

// eax und edx resetten
xor eax, eax
xor edx, edx

cmp edx, ebx
setz dl
and eax, edx

<nächstes edx und ebx laden>

cmp edx, ebx
setz dl
and eax, edx

<nächstes edx und ebx laden>

cmp edx, ebx
setz dl
and eax, edx

<nächstes edx und ebx laden>
...
Wenn alle verglichenen Werte identisch sind, ist eax am ende True, sonst False. (Auf den Stack schieben könntest du die Werte aber natürlich auch.)

Geändert von Namenloser (16. Mär 2012 um 17:07 Uhr)
  Mit Zitat antworten Zitat