Daca e ASM AT&T se pare ca pentru instructiuni, sursa si destinatia sunt inversate.
Incearca sa inversezi instructiunile, gen:
mov $n, %eax
mov $2, %ebx
cmp %eax, %ebx
O sa devina:
mov %eax, $n
mov %ebx, $2
cmp %ebx, %eax
Mai multe despre Intel vs AT syntax aici:
http://asm.sourceforge.net/articles/linasm.html