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 ---           &#59;;Busqueda de la palabra mas larga          &#59;;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&#59;;' ' espacio           jz  c0           jmp    n0   c0:    mov al, conta1       &#59;contador que identifica la palabra mas larga           cmp al,conta0         &#59;contador anterior           jb    ct0                  &#59;si es menor            mov di,si           mov conta0,al   ct0:   inc si            mov conta1,0   &#59;;reiniciamos contador           jmp c1     &#59;;incrementa SI hasta  pasar los espacios          n0:   inc conta1           inc si       &#59;; 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

[0] Índice de Mensajes

Ir a la versión completa