Programación General > ASM (Ensamblador)
Sustituir Caracteres
(1/1)
ALM:
Tengo una cadena de caracteres de la cual identifico la palabra mas grande y la más pequeña. Una vez identificadas, necesito cambiarlas de orden, es dedir, poner a la pequeña en el lugar de la grande y visceversa.
Me podrían ayudar, es urgente !!!!
Gracuas
:rolleyes:
Super_G:
Parece un problema cachirulo;
en resumen si tengo la siguiete cadena:
cadena db 'la cadena mas corta y nada mas',0
deberia quedar asi:
cadena db 'la y mas corta cadena nada mas',0
¿cierto?
1º debo reconocer las palabras(estas estan separadas por espacios[ ] con el valor de 32 en Ascii)
2º encontrar de alguna forma la palabra mas corta y la mas larga, o lo mismo ubicar sus posiciones dentro la cadena(puedo dejar un puntero en la palabra mas corta y otro en la mas larga).
3º(manejar bien los punteros) copio la cadena en otra, hasta "llegar" a la palabra(sea la corata o la larga), copio su opuesta(si estamos sobra la mas larga copio la mas corta y viseverza), a continuacion copio el resto de la cadena hasta llegar a la otra palabra y rescion copio su opuesta y por ultimo copio el resto.
para la primera parte podria ser asi:
--- Código: Text --- ;;Busqueda de la palabra mas larga ;;DI se queda apuntando a la palabra mas larga mov si,offset cadena mov conta0,0 mov conta1,0 c1: mov al,[si] cmp al,0 jz NEXT1 cmp al.32;;' ' espacio jz c0 jmp n0 c0: mov al, conta1 ;contador que identifica la palabra mas larga cmp al,conta0 ;contador anterior jb ct0 ;si es menor mov di,si mov conta0,al ct0: inc si mov conta1,0 ;;reiniciamos contador jmp c1 ;;incrementa SI hasta pasar los espacios n0: inc conta1 inc si ;; siguiente caracter NEXT1:... cadena db 'la cadena mas corta y nada mas',0conta1 db 0conta0 db 0 no revise el codigo y de seguro que tiene errores,pero lo importante es la idea.
Navegación
Ir a la versión completa