REPNZ SCAS Instructions de Montage Détails

Je suis en train de désosser un binaire et de l'instruction suivante est source de confusion, moi, quelqu'un peut-il préciser exactement ce que cela fait?

=>0x804854e:    repnz scas al,BYTE PTR es:[edi]
  0x8048550:    not    ecx

Où:

EAX: 0x0
ECX: 0xffffffff
EDI: 0xbffff3dc ("aaaaaa\n")
ZF:  1

Je vois qu'il est en quelque sorte la décrémentation ECX de 1 à chaque itération, et que l'EDI est en incrémentant le long de la longueur de la chaîne. Je sais qu'il calcule la longueur de la chaîne, mais aussi loin que exactement COMMENT ça se passe, et pourquoi "al" est en cause, je ne suis pas tout à fait sûr.