Programa detector de subcadenas (1)

En esta entrada veremos el código de lo que es un detector de subcadenas en Ensamblador.

org 100h
include 'emu8086.inc'
mov si, 0    ;ponemos si en 0
 
comienzo:
mov al, msg2[0]   ;copiar la primera letra de la palabra A al
cmp msg[si],"$"   ;si es el fin de la cadena mandar a final
 jz noacepta    ; brinca si en efecto es el final de la cadena
                  ;si no continuo con las siguientes lineas
cmp msg[si], al   ;comparar si encuentra la primera letra de la cadena en msg2
 jne seguir    ;brica si es diferente
               ;si no continuo con la ejecucion

mov di, 1         ;poner en 1 di

comprobar:
 mov al, msg2[di]       ;extraigo el siguiente caracter de msg2
 mov bx, di             ;igualo bx=di
 cmp msg[si+bx], al     ;consiguo el caracter ubicado en la posicion si+bx y lo comparo con al (al contiene el caracter de msg2)
 jne seguir             ;si no coincide mandar a seguir
                        ;si no continuo con las siguientes lineas

 inc di                 ;incrementar di para seguir recorriendo cadena

 cmp msg2[di],"$"       ;si es el fin de la cadena y el programa llego
 jz resultado           ;aca quiere decir que la cadena es parte de la palabra


loop comprobar         ;bucle para recorrer cadena
                                                 
                                                 
seguir:

 inc si       ;para seguir recorriendo la palabra

loop comienzo   ;bucle principal para recorrer palabra

resultado:
  print "Si lo contiene"
  jmp final  ;brinco al final

noacepta:
  print "No la contiene"
  jmp final ;brinco al final



final:
ret 

msg db "tecnologico$"
msg2 db "ec$"

Resultado:

Comentarios