codice:
TEST ebx,000010000000001b ;controlla l'11 bit l'OF e il primo CF
je salta ;se l'11=1 e l'1=1
Normalmente si usa un jne (o jnz) dopo un test, di modo che se ( x & y != 0 ) significa che almeno un bit della "maschera" e` settato a 1. E basta osservare il codice in alto per trovare un errore. La condizione scritta sopra sara` vera sse ( ebx & 00001... == 0 ), e fa esattamente il contrario di cio` che si vuole: il salto verra` fatto se nessun bit della maschera e` settato in ebx. Ma poi cosa rappresenta quell`ebx? Che ci sta dentro?
Se si vuole fare realmente un controllo a mano sui flags (tutti), vi si puo` accedere cosi`:
codice:
pushfd ; salva eflags sullo stack
pop eax ; preleva eflags dallo stack e lo memorizza in eax
E poi si fanno i test sui bits di eax.
Ciao.