Occorrenza delle doppie

Scrivere un programma Assembly che acquisisca da tastiera una stringa e verifichi se in essa occorrono lettere doppie(p.e."errare,"alcool).

#make_com#
org 100h
    
leggi macro var1
   lea dx, var1            
   mov ah, 0Ah 
   int 21h
endm      
       
mostra macro var2
   lea dx, var2            
   mov ah, 09h 
   int 21h 
endm    
   
jmp start   
   
buffer db 21, ?, 21 dup(?)  
msg_iniziale db 'Inserisci una stringa di massimo 20 caratteri: $' 
msg_doppie db 'Doppie riscontrate$'
msg_non_doppie db 'Doppie NON riscontrate$'

start:                     
  mostra msg_iniziale
  leggi buffer 
  mov dx, 0300h
  mov bh, 0   
  mov ah, 02h
  int 10h
  cmp buffer[1], 1
  je non_doppie
  js non_doppie  

mov di, 0
mov cl, buffer[1] 
dec cl      
mov ax, 0
mov si, 0

scansione:      
  mov al, buffer[si + 2]
  mov ah, buffer[si + 3]
  cmp ah, al
  je uguali
  jmp continua
  uguali:
    mov di, -1
  continua:
    inc si
  loop scansione   
   
cmp di, -1   
je doppie
jmp non_doppie
   
doppie:   
mostra msg_doppie
jmp fine

non_doppie:
mostra msg_non_doppie
   
fine:

ret