А твой код — говно, потому что ты берёшь две константы, и под них используешь регистры, и используешь два раза xchg|, который вообще не оптимизирован, и использует lock, |вместо xor
Понятно, почему твой код — говно?
Ну и ещё учесть, что это вообще детская задача 1-го курса, и ты залажал