El problema esta en el calculo del tamaño de las cadenas, esta imprimiendo una sola vez pero el tamaño es 0x34=52 y por lo tanto sale todo.
Asi parece ir al menos mejor:
msj1: db "son iguales",0xA ; Cadena 1 (incluye ENTER).
l1: equ $-msj1 ; Cantidad de bytes de Cadena 1.
msj2: db "el primero es mayor",0xA ; Cadena 2 (incluye ENTER).
l2: equ $-msj2 ; Cantidad de bytes de Cadena 2.
msj3: db "el segundo es mayor",0xA ; Cadena 3 (incluye ENTER).
l3: equ $-msj3 ; Cantidad de bytes de Cadena 3.
PD. Notese que lo depure en Windows, asi que solamente comprobe los valores de ECX y EDX. ECX apuntaba correctamente al principio del texto (¿Una gran cadena sola? ¿No seria mejor terminar cada una de las frases con 0 para que sean cadenas independientes?) pero EDX era demasiado grande para funcionar bien.