title: A better form to find a Substring in a string in assembly code (MASM)?
body: <p>So i made this code with the knowledge i gather in various sites, i think there is an optimazed way to do it without pushing and poping the registers on the stack memory, but i don't know how to do it.
  <strong>Here is my Code</strong></p>
  <pre><code>comparing proc
      MOV CX, SIZEOF vec2 ;The size of the substring
      DEC CX
      MOV DX, SIZEOF vec1 ; The size of the String
      LEA SI, vec1        ; The String
      LEA DI, vec2        ; The substring
  
  FIND_FIRST:        
      MOV AL, [SI];   storing the ascii value of current character of mainstring 
      MOV AH, [DI];   storing the ascii value of current character of substring
      CMP AL,AH;      comparing both character
      JE FITTING;      if we find it we try to find the whole substring
      JNE NEXT
  
  NEXT:
      INC SI; We go to the next char
      DEC DX; And the size of the string decreased
      JE N_FINDED
      JMP FIND_FIRST
  FITTING:
      CLD
      PUSH CX ; I push this register because in the instruction REPE CMPSB
      PUSH SI ; They change.
      PUSH DI
      REPE CMPSB
      JNE N_FITTING
      JE FINDED
  N_FITTING:
      POP DI
      POP SI
      POP CX
      JMP NEXT ; if the complete substring doesn't fit we go to the next char
  FINDED:
      POP DI
      POP SI
      POP CX
      MOV AL, 0001H;  substring found
      JMP RETURN
  
  
  N_FINDED:    
      MOV AL, 0000H;  substring not found
  
  RETURN:
      ret 
  comparing endp
  </code></pre>