Strings in Assembler sind nullterminiert, sprich du hast einen Pointer auf den Anfang, und der String geht solange, bis 0 kommt. Jetzt lässt du in deiner Vergleichsschleife in den zwei entsprechenden Strings die Pointer jeweils wandern (+1, Pointer sind ja nix weiter als Zahlen) und vergleichs die jeweilige Speicherstelle miteinander.
_________________
Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!