Je ne comprend pas en quoi ce résultat peut varier.
Une petite précision s'impose ici, tout dépend de ce que l'on appelle "résultat" d'une instruction.
Pour ma part, j'ai employé le mot résultat pour désigner la valeur du registre en question après l'instruction "XOR EAX,EAX".
Pour l'instruction "TEST EAX,EAX" je considère que le résultat est l'état des flags après cette instruction, car bien entendu l'instruction "TEST" ne modifie ni l'une, ni l'autre opérande.
Petite citation du cours de deamoncrack :
Cette instruction teste la valeur d’un ou plusieurs bits en effectuant un ET LOGIQUE sur les opérandes. Le résultat ne modifie pas les opérandes mais les indicateurs.
Exemple :
TEST AX,1 >> Effectue un ET LOGIQUE sur le premier bit de AX avec 1, si il est égal à 1, ZF passera à 1 et inversement (si 0 alors ZF=0).
Un TEST AX,AX (souvent utilisé) permet de voir si AX est égal à 0 ou non.
Le résultat(l'état des flags) sera donc bien différent suivant la valeur de EAX.