FCOM/FCOMPP/FCOMPP
Condition | C3 | C2 | C0 |
---|---|---|---|
ST(0) > SRC | 0 | 0 | 0 |
ST(0) < SRC | 0 | 0 | 1 |
ST(0) = SRC | 1 | 0 | 0 |
FPU status word
F(N)STSW AX | AX | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
AH | AL | ||||||||||||||||||||||||||||||||
8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | ||||||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||||||||||||||||
B | C3 | TOP | C2 | C1 | C0 | ES | SF | PE | UE | OE | ZE | DE | IE | ||||||||||||||||||||
FPU Busy | Top of Stack Pointer |
Invalid Operand Exception | |||||||||||||||||||||||||||||||
Condition Code | Denormal Operand Exception | ||||||||||||||||||||||||||||||||
Error Summary Status | Zero Divide Exception | ||||||||||||||||||||||||||||||||
Stack Fault | Overflow Exception | ||||||||||||||||||||||||||||||||
Precision Exception | Underflow Exception | ||||||||||||||||||||||||||||||||
FCOMP scenario #1
FLD | [EAX] | |
FCOMP | [ECX] | |
FNSTSW | AX | |
TEST | AH, 1 | |
JNZ | branch ;take branch when [eax] < [ecx] |
FCOMP scenario #2
FLD | [EAX] | |
FCOMP | [ECX] | |
FNSTSW | AX | |
TEST | AH, 41h | |
JP | branch ;take branch when [eax] > [ecx] |
REP: for ecx repetitions
STOSB/W/D: copy from EAX to EDI, inc EDI
MOVSB/W/D: copy from ESI to EDI, inc ESI and EDI