我想比较两个字符串是否相等,为什么不能成功呀?

data segment

 au db 23
 bu db  ?
 cu db 23 dup (?)
 qu db 'match$'
 ei db 'no match$'
 data ends
 extra segment
 aut db 23
 but db ?
 cut db  23 dup (?)
 
 extra ends
 code segment
   assume cs:code,ds:data,es:extra
 start:
   mov ax,data
   mov ds,ax
   mov ax,extra
   mov es,ax
   
   mov dx,offset au
   mov ah,0ah
   int 21h
  
   mov ah,02h
   mov dl,0dh
    int 21h
  
   mov ah,02h
   mov dl,0ah
    int 21h

   ;mov ax,extra
   ;mov ds,ax
   mov dx,offset aut
   mov ah,0ah
   int 21h
  
   mov ah,02h
   mov dl,0dh
    int 21h
  
   mov ah,02h
   mov dl,0ah
    int 21h
  lea si,cu
  lea di,cut
  xor ch,ch  
  mov cl,but 
  cld
 agin:cmpsb
  jne l1
  loop agin  
  mov dx,offset qu
  mov ah,09h
  int 21h
  jmp l2
l1:mov dx,offset ei
  mov ah,09h
 int 21h
l2: mov ah,4ch
 int 21h
code ends
end start