Non sono praticissimo con la sintassi AT&T, comunque
codice:
cmp $0, $buff
dovrebbe confrontare 0 con l'indirizzo di $buff; quello che tu vuoi invece è confrontare 0 con la memoria puntata da $buff, quindi qualcosa del genere:
codice:
cmpb $0,($buff)
o, se intendi confrontare il carattere '0' (la cifra, non il terminatore NUL):
codice:
cmpb '0,($buff)